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
网友评论