箭头函数的this 指向

let p ={
    num:1,
    add: function(a){
        
        let f = v => {
            //箭头函数没有this,往上找一层的this 就是箭头函数的this
            // 箭头函数没有this  不能用call  apply bind 进行绑定
            console.log(this)
            return v + this.num
        
        }
        let b = {num:3}
        return f.call(b, a)
    }
}
console.log(p.add());


/***
 *普通函数可以用bind,call apply 改变箭头函数的指向,
 *箭头函数没有this ,不可以通过bind 、call、apply改变this 指向的
 **/
let p ={
    num:1,
    current: this// 对象里面的this.一般指向Window、主要看调用者是谁,call apply bind 会改变this 指向
    add:(a)=>{
        ()=>{
      //当前的this 指向的是上一层函数的this,上一层如果还是箭头函数没有this,继续往上找,p 对象里面的current ,window对象,就是此时的this
      console.log(this.name)
     }
    }
}
console.log(p.add());  //输出为空因为 window是name 属性没有值

 

posted on 2022-11-23 16:36  totau  阅读(19)  评论(0编辑  收藏  举报

导航