当涉及到对象的方法时,作用域仍然让我感到困惑。在下面的代码中,我有两个邻居,每个邻居都有自己的方法。
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”总是邻居1对象(John),而不是邻居2对象(Bob)。能否简单地解释一下为什么neighbor1始终是“this”?谢谢!