箭头函数是怎么绑定this的?
看了不少资料,但是还是不太明白下面getField函数是从哪个角度来看绑定到了全局变量。
var obj = {
field: 'hello',
getField: () => {
console.log(this.field)
}
}
this是在它当前定义的词法作用域内找,obj里是有this的,getField定义在一个对象里按说obj这个this离他最近啊,怎么绑到全局上去了呢? 总感觉是我理解的角度不对。
7 回复
《你不知道的Javascript上卷》-第一部分-附录C-this词法 应该能解释你的疑问
看看这个 http://www.cnblogs.com/snandy/p/4403111.html 注意点中的3 箭头函数this固定,不再善变
var obj = {
array: [1, 2, 3],
sum: () => {
console.log(this === window); // => true
return this.array.reduce((result, item) => result + item);
}
};
// Throws "TypeError: Cannot read property 'reduce' of undefined"
obj.sum();
var obj = {
array: [1, 2, 3],
sum() {
console.log(this === obj); // => true
return this.array.reduce((result, item) => result + item);
}
};
obj.sum(); // => 6