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
下一篇: 用JavaScript判断IE浏览器