① 运行结果:
var name = "小李",age = 23;
var obj = {
name: "小陈",
objAge: this.age,//23
// age:this.age,
myFun: function(){
console.log(this);//输出对象obj内的信息
console.log(obj.name+"的年龄是"+this.objAge);//小陈的年龄是23
console.log(obj.name+"的年龄是"+this.age);//小陈的年龄是undefined
}
}
console.log(obj.objAge);//23
obj.myFun();
② 备注解释:
var name = "小李",age = 23;
var obj = {
name: "小陈",
objAge: this.age,//此时this指向window,objAge取得值23
// age:this.age,
myFun: function(){
console.log(this);//此时this指向obj,控制台输出对象obj内的信息
console.log(obj.name+"的年龄是"+this.objAge);//小陈的年龄是23
console.log(obj.name+"的年龄是"+this.age);//小陈的年龄是undefined,因为此时
//this是obj,,obj没有age属性。
}
}
console.log(obj.objAge);//23
obj.myFun();
很多小伙伴可能会问为啥都是obj对象里的this,指向却不同呢,原因就是:
this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window;当函数被作为某个对象的方法调用时,this等于那个对象。
特别注意:匿名函数的执行环境具有全局性,因此匿名函数中的this对象通常指向window对象!!!
参考文章: