为了账号安全,请及时绑定邮箱和手机立即绑定

 不明白这两段代码的this指向问题

 不明白这两段代码的this指向问题

MYYA 2019-05-25 15:41:50
这是《你不知道js》里面的两段代码,第一段代码this是指向调用的位置的,也就是obj2。不明白为什么第二段代码this不指向obj,而是指向全局了。functionfoo(){console.log(this.a);}varobj2={a:42,foo:foo};varobj1={a:2,obj2:obj2};obj1.obj2.foo();//42functionfoo(){console.log(this.a);}varobj={a:2,foo:foo};varbar=obj.foo;//函数别名!vara="oops,global";//a是全局对象的属性bar();//"oops,global"
查看完整描述

2 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

this总是指向调用者。
第一段里面foo函数的调用者是obj2,而第二段foo函数赋值给了全局变量bar,那么调用bar函数的就是全局对象,那么this指向全局对象,故输出全局的a
                            
查看完整回答
反对 回复 2019-05-25
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

与我们常见的很多语言不同,JavaScript函数中的this指向并不是在函数定义的时候确定的,而是在调用的时候确定的。换句话说,函数的调用方式决定了this指向。
参考:JavaScript的this指向问题深度解析
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 363 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信