Помогите новичку с колбэками
Всем привет!
Несколько лет программирую на С/С++. Сейчас пишу программу на Qt с использованием QtScript, чтобы программу можно было расширять с помощью ECMAScript (почти тот же JavaScript). Проблемы у меня возникли на стадии изучения ООП на JavaScript. Допустим, есть код:
var ob = {
function func(callb) {
callb();
}
}
function MainObject() {
var testVar = false;
ob.func(function(){
this.testVar = true;
});
}
var mobject = new MainObject();
Нужно, чтобы в конструкторе MainObject вызвалась функция func объекта ob и выполнила переданную функцию, сама функция должна установить переменную testVar функции MainObject. Если бы не было последней строки, можно было бы callb() заменить на callb.call(MainObject) (наверно). Но как задать объект 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;
});
|
Что-то сразу не заметил. Ты видимо хотел написать так?
function MainObject() {
this.testVar = false;
...
}
|
Огромное спасибо!!!!
|
| Часовой пояс GMT +3, время: 06:31. |