Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   изменение текущего контекста функции (https://javascript.ru/forum/jquery/3069-izmenenie-tekushhego-konteksta-funkcii.html)

vkovalev 15.03.2009 04:50

изменение текущего контекста функции
 
Добрый всем день, в mootools если надо изменить контекст, в котором работает функция, пишется примерно такое(за синтаксис не ручаюсь):
(function (){}).bind(нужный мне контекст)
В JQuery bind насколько я понял привязывает функции к событиям. А вот как бы изменить контекст, в котором работает функция?
Заранее спасибо за ответ

Gvozd 15.03.2009 07:40

http://javascript.ru/tutorial/object/thiskeyword

vkovalev 15.03.2009 12:44

спасибо

Gvozd 15.03.2009 13:07

пожалуйста

vkovalev 15.03.2009 13:54

уточнение
 
вернее, ситуация такая:есть класс, который грузит шаблон

function Template(file_name) {
this.template_data = '';

this.load_template = function()
{

$.get(file_name, function(data){
// не работает
this.template_data = data;
});
}
}

так понимаю, что безымянная функция в get работает не в контексте Template. Передать ей this в параметре вроде как не могу. Как бы это уладить?

Gvozd 15.03.2009 14:02

попробуйте так
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 исопльзуйте пожалуйста ББ-код для оформления исходных кодов

hogart 15.03.2009 14:53

Я делаю так:

function Template(file_name) {
  this.template_data = '';
  var that = this;
  this.load_template = function() {
    $.get(file_name, function(data){
      // теперь работает:)
      that.template_data = data;
    }); 
  } 
}

Gvozd 15.03.2009 15:04

hogart,
еще более замечательное использование замыкание.
твой вариант мне больше нравится

vkovalev 15.03.2009 15:04

Re
 
Еще раз спасибо, таки помогло )

Gvozd 15.03.2009 15:06

пожалуйста

hogart 15.03.2009 15:15

Gvozd, твой тоже вполне изящен:)

Gvozd 15.03.2009 15:32

ну, кому как.
лично я противник оберток по типу obj.get_property1() и obj.set_property1(), только для чтения-записи свойства.
считаю их надо испоьзовать толкьо в случае каких-то дополнительных проверок, или возвращения свойства по ярду дополнительных контролирующих факторов.
короче говоря сам я свой вариант на ситаю изящным.
для чтения-записи десятка совйств придется писать два десятка функций(либо циклом их создать, что чуточку короче).
а у тебя всего лиш дополнительная строчка, и объект-ссылка.твой мне более удобен
просто мой вариант-это первая мысль, пришедшая мне в голову.

hogart 16.03.2009 08:42

Gvozd, вкусовщина, в общем:) Но мой вариант короче, это да:)

Gvozd 16.03.2009 12:52

hogart,
это да:)


Часовой пояс GMT +3, время: 08:32.