function MyClass() {
this.a = "me a";
this.b = "me b";
};
MyClass.prototype.changeB = function(callback) {
this.a = "now me A";
doAnotherFunction(function(err, data) {
this.b = "now me B";
callback(null, this.b);});
};
function doAnotherFunction(callback) {
callback(null, null);
};
main();
function main() {
var myclass = new MyClass();
myclass.changeB(function(err, data) {
console.log("B: " + myclass.b + ", data: " + data);});
console.log(JSON.stringify(myclass));
}
When this runs:
B: me b, data: now me B
{"a":"now me A","b":"me b"}
Пройдите меня легко, я новичок в javascript и размещаю здесь.node.js/javascript - вложенные обратные вызовы
Мой вопрос: почему 'this.b' не изменяется в оригинальном экземпляре MyClass? Я читал здесь, где javascript не имеет области блока (только область функций). Если это была причина, то почему бы ему не считать «this.b» «неопределенным», где он устанавливает «сейчас меня B»?
Спасибо!
'this.b =" now me B "' находится внутри другой функции и вызывается в другом контексте выполнения. Поэтому 'this' не будет означать экземпляр' MyClass' в этом случае. –