Я видел кучу примеров, но, похоже, не могу получить пример кода.«this» ключевое слово внутри закрытия
Возьмем следующий код:
var test = (function(){
var t = "test";
return {
alertT: function(){
alert(t);
}
}
}());
и у меня есть функция на window.load как:
test.alertT();
Это все работает отлично. Однако, когда я пытаюсь явно установить контекст t внутри alert() в alertT, я просто получаю undefined.
Я пробовал:
var that = this;
alert(that.t); //undefined
Я пробовал:
return {
that: this,
alertT: function(){
alert(that.t); // undefined!
}
}
и я попытался:
var test = (function(){
var t = "test";
var myObj = this;
return {
alertT: function(){
alert(myObj.t); // undefined!
}
}
}());
что мне не хватает? Мне нужно иметь возможность устанавливать контекст явно для таких вещей, как обратные вызовы и т. Д. Я тоже видел примеры (http://stackoverflow.com/questions/346015/javascript-closures-and-this-context), которые кажутся такими, какие я делаю, так почему это не работает?
Почему вы хотите явно указать контекст? Ваши примеры на самом деле не показывают этого. Либо вам придется передать контекст в alertT-функцию, либо вам придется использовать метод bind для привязки функции к контексту вашего выбора. – Jakob
Пример был заглушен, поэтому его легко прочитать. Я хочу иметь возможность явного доступа к закрытой переменной для целей передачи этого в другую, переданную в функцию. – hackerhasid