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 新手并在这里发帖。
我的问题是为什么“this.b”在原始 MyClass 实例中没有改变?我在这里读到 javascript 没有块范围(只有函数范围)。如果这就是原因,那么为什么不将“this.b”视为“未定义”,将其设置为“现在我 B”?
谢谢!