Javascript箭头功能无法正常工作?

时间:2018-10-23 00:57:23

标签: javascript arrow-functions

以下代码按预期工作:

let letter = {
    getNum() {
        return this.number;
    }
};

let a = {number:20, __proto__:letter};

console.log(a.getNum()); // 20

但是如果将getNum更改为箭头功能:

let letter = {
    getNum: () => this.number
};

a.getNum()返回undefined,为什么?

2 个答案:

答案 0 :(得分:4)

对于常规函数,this的值(通常)是在调用它们时确定的。
对于箭头函数,this的值在定义它们时确定。

因此,在第一种情况下,由于this中的aa等于a.getNum()。但是在第二种情况下,调用它的方式并不重要,this可能等于window对象(除非letter是在其他函数中创建的)。 window.number未定义。

答案 1 :(得分:2)

箭头函数没有自己的this值。 this指的是上下文。