Показать сообщение отдельно
  #2 (permalink)  
Старый 03.05.2014, 15:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от MishaUA
Но как задать объект this в данном случае?
Контекст надо задавать при вызове функции. А вызов у тебя происходит на третьей строчке. Вот там и должен устанавливаться контекст. Например так:

var ob = {
    function func(callb, context) {
        callb.call(context);
    }
}
 
function MainObject() {
    var testVar = false;
     
    ob.func(function(){
        this.testVar = true;
    }, this);
}


Хотя есть ES5 функция bind(), с помощью которой можно привязать контекст к самой функции:

ob.func(function(){
        this.testVar = true;
    }.bind(this));


Ну и самый простой вариант, не требующий указания контекста:
var mainObject = this;
    ob.func(function(){
        mainObject.testVar = true;
    });
__________________
В личку только с интересными предложениями
Ответить с цитированием