以下代码为什么objAge 能调用this.age,myFun:function(){} 里...
发布网友
发布时间:2024-09-28 14:50
我来回答
共1个回答
热心网友
时间:2024-10-30 20:54
因为这里的两个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了。