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

пожалуйста


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