this 是 Javascript语言的一个关键字.
它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如,
function test(){
this.x = 1;
}
随着函数使用场合的不同,this 的值会发生变化.但是有一个总的原则就是,this 指的说是调用函数的那个对象.
1.纯粹函数调用
//这是函数的最通常的用法,术语全局性调用,因此this 就代表全局对象Global.
function test(){
this.x =1;
alert(this.x);//1
}
var x = 1;
function test(){
alert(this.x);//1
}
2.作为对象的方法调用
//函数可以作为某个对象的方法调用,这时候 this 指的就是这个上级对象.
function test(){
alert(this.x);
}
var obj = {
x: 1
};
obj.test = test;
obj.test();//1
3.作为构造函数调用
//所谓构造函数,就是通过这个函数生成的一个新对象.这时,this就指的是这个新对象.
var x = 2;
function test(){
this.x = 1;
}
var o = new test();
alert(o.x);//1
4.apply 调用
apply() 是函数对象的一个方法, 它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象,因此 this 指的就是 这个第一个参数.
var x = 1;
function test(){
alert(this.x);
}
var obj = {
x :2
};
obj.test = test;
obj.test.apply();//1
obj.test.apply(obj);//2
//apply 的第一个参数为空时候, 默认调用全局对象.
call( ), apply( ), bind( )
- call( ),方法给定第一个参数,绑定this 的指向对象,之后为函数调用所需参数,逗号隔开;
- apply( ),方法与call( )方法一致,第一个参数绑定this指向,第二个参数为一个数组,指定调用函数所需要参数.
- bind( )方法,可以绑定调用函数的this指向,与参数.后可更改(通过bind 方法改变).
- call( )与apply( ) 第一个参数 若为null 则this,指向全局对象.