我试图理解Javascript“ this”关键字中最难的部分。
我找到了这篇详细的文章,其中talks about ES5 and ES6 lexical this
作者在此处显示了此示例
// Test it here: https://jsfiddle.net/maasha/z65c1znn/
var bunny = {
name: 'Usagi',
tasks: ['transform', 'eat cake', 'blow kisses'],
showTasks: function() {
this.tasks.forEach(function(task) {
alert(this.name + " wants to " + task);
});
}
};
bunny.showTasks();
// [object Window] wants to transform
// [object Window] wants to eat cake
// [object Window] wants to blow kisses
// please note, in jsfiddle the [object Window] is named 'result' within inner functions of methods.
view raw
在这里this.name是指对象窗口,而不是名称“ Usagi”,对此给出了以下解释
为什么“ this”绑定到窗口对象?因为“ this”总是引用其所在函数的所有者,在这种情况下-因为它现在不在范围内-窗口/全局对象。
这里说
此”,始终引用其所在功能的所有者,
[问题] 我无法理解以上引用的行。像[对象窗口]如何成为函数的所有者?对象兔子不应该是所有者/父母吗?因此,它不应该指向名称“ Usagi”吗?
就像同一篇文章中的不同示例一样,这是指名称
var bunny = {
name: 'Usagi',
showName: function() {
alert(this.name);
}
};
bunny.showName(); // Usagi