this指的是,调用函数的那个对象。
指向全局
var x = 1;
function test(){
var x =2;
alert(x+","+this.x);
}
test();
这个时候的结果是:2,1
此时的this指向全局
作为某个对象的方法调用,指向这个上级对象
function test(){
var x=1;
alert(x+","+this.x+","+window.x);
}
var o = {
x:2
};
var x = 3;
test(); // 1
o.test = test;
o.test();
这个时候的结果分别是1,3,3和1,2,3,在test作为o的方法时,this指向o
作为构造函数
function test(){
var x=1;
alert(x+","+this.x+","+window.x);
}
var x=2;
var o= new test();
此时的结果是1,undefined,2,this指向o,但是o的x还没有定义。
apply
function test(){
var x=1;
alert(x+","+this.x+","+window.x);
}
var x=2;
var o={x:3,test:test};
o.test.apply();
apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。
apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为1,2,2,证明this指的是全局对象。