箭头函数不同于传统 JS 中的函数,箭头函数并没有属于自己的 this,他所谓的 this 是捕获其所在上下文的 this 值,作为自己的 this 值,并且由于没有属于自己的 this,所以是不会被 new 调用的,这个所谓的 this 也不会被改变。可以用 Babel 理解一下箭头函数:
// ES6
const obj = {
getArrow() {
return () => {
console.log(this === obj);
};
},
};
// ES5,由Babel转义
var obj = {
getArrow: function getArrow() {
var _this = this;
return () => {
console.log(this === obj);
};
},
};