js this在闭包中的历史遗留问题

2020-10-21  本文已影响0人  小李不小

this在闭包中的历史遗留问题

// var hd={
//  ha:'haha',
//  obj:function(){
//      // console.log(this)
//      // console.log(this.ha)
//      return function(){
//          console.log(this)
//      }
//  }
// }

//执行的obj的方法,return 函数相当于把放到了 window上了
// var a=hd.obj()
// a()
怎么才能解决this访问指向问题呢


var hd={
    ha:'haha',
    obj:function(){
        // console.log(this)
        // console.log(this.ha)
        //把hd的this存起来 ,this就等于hd={ha:'haha',obj:function(){} }
        var that=this;
// 虽然函数被 return 出来了,但是带着that出去的,that等于this指向obj函数,在函数内访问that.hd 也可以访问到的。
        return function(){
            console.log(that) 
            console.log(that.ha)
        }
    }
}

var a=hd.obj()
a()

下面图片的结果


image.png
上一篇 下一篇

猜你喜欢

热点阅读