箭头函数中的this
箭头函数根据外层(函数或者全局)作用域来决定this
- 这样this就像其他面向对象的语言,在哪里定义就指向哪里
function foo() {
return (x) => {
console.log(this);
}
}
var obj1 = {
x: 1
};
var obj2 = {
x: 2
};
var bar = foo.call(obj1);
bar(); //=> { x: 1 }
bar.call(obj2); //=> { x: 1 } foo()的this绑定到obj1,箭头函数的绑定无法修改
编写程序时要么全部用箭头函数风格的this机制,要么用ES6以前的this风格,尽量不要混用