【发布时间】:2018-12-06 23:06:10
【问题描述】:
在使用对象的方法时,我仍然对范围感到困惑。在下面的代码中,我有两个邻居。每个人都有自己的方法。
var counter = 0;
var neighbor1 = {
name: 'John',
myFunction: function () {
console.log(this.name)
this.doStuff();
}
};
var neighbor2 = {
name: 'Bob',
doOtherStuff: function () {
console.log(this.name);
if(counter>5) {
return false;
} else {
counter++;
this.myFunction();
}
}
};
neighbor1.doStuff = neighbor2.doOtherStuff;
neighbor1.myFunction();
我知道当我调用neighbor1.myFunction 方法时,它会调用neighbor2.doOtherStuff 方法,因为我使用了上面的赋值运算符。我不明白为什么'this'总是neighbor1对象(John)而不是neighbor2对象(Bob)。有人可以简单地解释一下为什么neighbor1总是'this'吗?谢谢!
【问题讨论】:
标签: javascript object scope