在ES5中将其词汇化

时间:2018-06-25 12:25:52

标签: javascript this

我试图理解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

0 个答案:

没有答案