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了。
添加回答
举报
0/150
提交
取消