JavaScript箭头函数无法按预期工作?

4
以下代码按预期工作:
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个回答

4
对于普通函数,this 的值通常在调用时确定。
对于箭头函数,this 的值在定义时确定。
因此,在第一种情况下,由于a.getNum()中的athis 等于 a。但在第二种情况下,你调用的方式并不重要,this 可能等于 window 对象(除非 letter 是在某个其他函数内部创建的)。window.number 是未定义的。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接