美文网首页
js this在闭包中的历史遗留问题

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

作者: 小李不小 | 来源:发表于2020-10-21 15:41 被阅读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

    相关文章

      网友评论

          本文标题:js this在闭包中的历史遗留问题

          本文链接:https://www.haomeiwen.com/subject/nmgipktx.html