以下代码按预期工作:
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
,为什么?
答案 0 :(得分:4)
对于常规函数,this
的值(通常)是在调用它们时确定的。
对于箭头函数,this
的值在定义它们时确定。
因此,在第一种情况下,由于this
中的a
,a
等于a.getNum()
。但是在第二种情况下,调用它的方式并不重要,this
可能等于window对象(除非letter
是在其他函数中创建的)。 window.number
未定义。
答案 1 :(得分:2)
箭头函数没有自己的this
值。 this
指的是上下文。