изменение текущего контекста функции
Добрый всем день, в mootools если надо изменить контекст, в котором работает функция, пишется примерно такое(за синтаксис не ручаюсь):
(function (){}).bind(нужный мне контекст) В JQuery bind насколько я понял привязывает функции к событиям. А вот как бы изменить контекст, в котором работает функция? Заранее спасибо за ответ |
|
спасибо
|
пожалуйста
|
уточнение
вернее, ситуация такая:есть класс, который грузит шаблон
function Template(file_name) { this.template_data = ''; this.load_template = function() { $.get(file_name, function(data){ // не работает this.template_data = data; }); } } так понимаю, что безымянная функция в get работает не в контексте Template. Передать ей this в параметре вроде как не могу. Как бы это уладить? |
попробуйте так
function Template(file_name) { this.template_data = ''; this.load_template = function() { var set_template_data=function(data){this.template_data = data;} $.get(file_name, function(data){ // не работает set_template_data(data); }); } } PS исопльзуйте пожалуйста ББ-код для оформления исходных кодов |
Я делаю так:
function Template(file_name) { this.template_data = ''; var that = this; this.load_template = function() { $.get(file_name, function(data){ // теперь работает:) that.template_data = data; }); } } |
hogart,
еще более замечательное использование замыкание. твой вариант мне больше нравится |
Re
Еще раз спасибо, таки помогло )
|
пожалуйста
|
Gvozd, твой тоже вполне изящен:)
|
ну, кому как.
лично я противник оберток по типу obj.get_property1() и obj.set_property1(), только для чтения-записи свойства. считаю их надо испоьзовать толкьо в случае каких-то дополнительных проверок, или возвращения свойства по ярду дополнительных контролирующих факторов. короче говоря сам я свой вариант на ситаю изящным. для чтения-записи десятка совйств придется писать два десятка функций(либо циклом их создать, что чуточку короче). а у тебя всего лиш дополнительная строчка, и объект-ссылка.твой мне более удобен просто мой вариант-это первая мысль, пришедшая мне в голову. |
Gvozd, вкусовщина, в общем:) Но мой вариант короче, это да:)
|
hogart,
это да:) |
Часовой пояс GMT +3, время: 08:32. |