Помогите новичку с колбэками
Всем привет!
Несколько лет программирую на С/С++. Сейчас пишу программу на 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, время: 03:39. |