为什么JavaScript中的“ this”在示例中引用了不同的上下文?

时间:2018-07-07 14:16:45

标签: javascript

我对JavaScript还是很陌生,我对以下两个“ this”示例,“ this”所绑定的内容以及原因感到困惑:

示例1:

function Person(age) {
    this.age = age;
    this.growOld = () => {
        this.age++;
    }
}
var person = new Person(1);
setTimeout(person.growOld,1000);

示例2:

var Actor = {
  name: 'RajiniKanth',
  movies: ['Kabali', 'Sivaji', 'Baba'],
  getName: () => {
     alert(this.name);
  }
};

Actor.getName();

为什么尽管两个示例都使用了箭头功能,但是“ this”却绑定到了不同的上下文?

2 个答案:

答案 0 :(得分:0)

使用箭头函数在对象内部的方法将绑定到该对象,如果不在对象内部,则该方法引用全局范围,即使被另一种方法封装也是如此。

答案 1 :(得分:0)

关键字this在函数表达式和函数声明中具有不同的含义。

箭头函数是表达式。因此,这绑定到词汇上下文。

请参见MDN this