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

为什么objAge 能调用this.age,但是得到的是undefined?

为什么objAge 能调用this.age,但是得到的是undefined?

翻阅古今 2022-03-25 13:09:55
var name='小王',age=17;var obj={name:'小张',objAge:this.age,myFun:function(){console.log(this.name+'年龄'+this.age)}}obj.myFun();为什么objAge 能调用this.age,myFun:function(){} 里调用this.age得到是undefined?
查看完整描述

1 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

因为这里的两个this并不是指向同一个对象,
objAge:this.age, //这个this是指window
console.log(this.name+'年龄'+this.age) //这里的两个this是指obj
如果改成
console.log(this.name+'年龄'+this.objAge)
那就没问题了。
this是指调用者,也就是说谁调用自己的那么谁就是this。
objAge:this.age, 这里是对象属性值的直接赋值,程序运行到这里的时候,调用者仍然是最顶层对象也就是window
myFun:function(){ 而这里则是声明对象的一个方法,function里面的代码并不是立即执行的。
obj.myFun(); 这个时候就是对对象obj的方法myFun进行调用了,调用者毫无疑问就是obj对象,那么上述function内代码中的this就变成obj了。

查看完整回答
反对 回复 2022-03-28
  • 1 回答
  • 0 关注
  • 225 浏览
慕课专栏
更多

添加回答

举报

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