欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2020-5:作用域链--this的指向问题(JavaScript)

程序员文章站 2022-04-05 08:07:31
...

obj.fun()

fun中的this指向 .前的obj

new 构造函数()

构造函数中的this指向 将来new出的新对象

fun()

匿名函数自调用:(function(){})()

setInterval(function(){…},1000)

setTimeout(function(){…},1000)

setInterval(obj.fun,1000)

setTimeout(obj.fun,1000)

以上this均指向window

btn.addEventListener(‘click’,obj.fun)

fun中的this指向btn
因为事件处理函数调用执行时,btn.onclick() 等价于 btn.fun()

另:

    let lilei = {
      intr0 : function(){ console.log('intr0.',this) }, // this 指向lilei
      intr1(){ console.log('intr1.',this) }, // this 指向lilei,同上,两种写法等价
      intr2 : ()=>{ console.log('intr2.',this) }, // this 指向window,箭头函数内外this通用
    }
    lilei.intr0()
    lilei.intr1()
    lilei.intr2()

    let a = 10
    let obj = {
      a : 20,
      intr : function(){
        let a = 30
        console.log('a:',this.a)
      }
    }

    obj.intr() // 20
    let intr = obj.intr()
    intr() // 10