在看了本系列文章的前两篇之后,我收集了一些关于this的典型例子,和大家分享,也可以检查是否掌握了this。
例1:
var obj = {
func: function () {
alert("func():this=" + this);
}
};
obj.func();//func():this=[object Object]
var ref = obj.func; //注意obj.func和obj.func()的区别
ref();//func():this=[object Window]
例2:
var obj={
x:10,
A:function(){
function B(){
alert(this);//[object window]
alert(this.x);//undefined
}
B();
}
};
obj.A();
如果要使例2的this指向obj,该怎么办呢?就需要将this保存在一个变量中,如例3:
var obj={
x:10,
A:function(){
var that = this;
function B(){
alert(that);//[object Object]
alert(that.x);//10
}
B();
}
};
obj.A();
setTimeout函数并未改变执行上下文,所以this在setTimeout函数中与this在普通函数中并没有本质上的区别。
例4:
var obj = {
x : 100,
y : function(){
alert(this); //object Object
var that = this;
setTimeout(
function(){ alert(that.x); } //100
, 2000);
}
};
obj.y(); //弹出100
例5:
var a=6;
setTimeout(function(){
alert(this.a);//66
var a=666;
},1000);
a=66;
可以对本篇某些内容有疑问,可以看本系列的前两篇文章: