这个问题困惑了小编很久之前的一个思路不对导致问题一直走向一个错误的方向,现在豁然开朗来跟大家一起分享一下收获
- 无this绑定
箭头函数准确来讲是没有this绑定的,在使用时它的this是继承下来的,关于箭头函数的this指向我们首先不要走进的误区就是作用域链,既然他自身都没有this那怎么会根据作用域链来找this指向呢? - 案例分析
箭头函数中this指向只有两种情况:
- 没有被函数包裹,那么它里面的this就指向就是全局,window上面的对象
var a = 'I am windows';
let obj = {
a: 'I am objs',
fun: () => {
console.log(this.a);
}
}
obj.fun(); // 输出I am windows
- 被函数包裹就是与同级定义
var a = 'I am windows';
let obj = {
a: 'I am objs',
fun(){
(() => {
console.log(this.a);
})() // 这边就不弄其他包裹了就用立即执行函数最明了
}
}
obj.fun(); // I am objs
像上面的立即执行函数如果是function的话就输出为全局a,箭头函数同样解决了一些问题,当我们在被函数包裹时就可以采取它然后就可以使用对象自身的方法以及属性值。