var x="全局对象";
var test={
tests:function test1(){
this.x="外部函数";
function test2(){
alert(this.x);//此时的this指向的是全局对象,本来应该指向的是外部函数对象
};
test2();
}
};
test.tests();//结果为"全局对象",这是语言设计上的失误,用的时候需要注意
解决方法:
var x="全局对象";
var test={
tests:function test1(){
this.x="外部函数对象";
var that=this;//通过定义that变量,并赋值为this
function test2(){
alert(that.x);//此时内部函数就可以通过that变量来访问外部函数中的x了
};
test2();
}
};
test.tests();//结果为"外部函数对象"
更多的this内容可以看这篇文章: