Я все еще растерялся, когда дело доходит до области при работе с методами объекта. В приведенном ниже коде у меня есть два соседа. У каждого свой метод.
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();
Я понимаю, что когда я вызываю метод соседа mymy, он будет вызывать метод ближнего соседа, потому что я использовал оператор присваивания выше. Чего я не понимаю, так это того, почему «this» всегда будет объектом соседний (Джон), а не объектом соседний (Боб). Может кто-нибудь объяснить простыми словами, почему сосед1 всегда «это»? Спасибо!