this的用法【this,正在使用的对象。】
(1)【纯粹的函数调用】它代表函数运行时,自动生成的一个内部对象(这种情况只能在函数内部使用)
function test1(){ this.x=1; alert(this.x);//alert(this.x); } test1();//1
(2)【纯粹的函数调用】全局对象,this代表全局对象Global【window】
var x=2; function test2(){ alert(this.x); } test2(this.x);//2
var x=1; function test3(){ this.x=0; } test3(); alert(this.x);//0,当执行test3();的时候,this就代表了window对象,这个时候与window.test()是等价的!
(3)【作为对象方法调用】函数可以作为某个对象的方法调用,这时这个this就指这个上级对象
function test3(){ alert(this.x); } var obj={}; obj.x=4; obj.y=test3; obj.y(); //=== var obj={x:4,y:test3}; obj.y();
(4)【作为构造函数调用】所谓构造函数,就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。
function test4(){ this.x=3; } var t=new test4(); alert(t.x);//3 //为了证明此时this不是全局变量 var x=9; function test5(){ this.x=7; } var ts=new test5(); alert(x);//9
(5)【apply()调用】apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。
var x=11; function test6(){ alert(this.x); } var obj={}; obj.x=1; obj.y=test6; // obj.y.apply();//11;apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。 obj.y.apply(obj);//1;运行结果就变成了1,证明了这时this代表的是对象obj。