在函数内部运行时,内部会自动有一个this对象可以使用
在不同的场合,this会有不同的值,this就是函数运行时所在的环境
情况一:纯粹的函数调用
这是函数的最通常用法,属于全局性调用,因此this就代表全局对象。请看下面这段代码,它的运行结果是1。
var x = 1;
function Fun1() {
console.log(this);
console.log(this.x);
}
Fun1();//1
情况二:作为对象的方法调用
函数还可以作为某个对象的方法调用,这时this就指这个上级对象。
function Fun2() {
console.log(this);
console.log(this.y);
}
var obj = {};
obj.y = 1;
obj.Fun2 = Fun2;
obj.Fun2();//1
情况三:作为构造函数调用
所谓构造函数,就是通过这个函数,可以生成一个新对象。这时,this就指这个新对象。
function Fun3() {
console.log(this);
this.x = 2;
}
var f3 = new Fun3();
console.log(f3.x);//2,这里的x是局部变量
情况四:apply(),call()调用
它的第一个参数就表示改变后的调用这个函数的对象
var z = 1;
function Fun4() {
console.log(this);
console.log(this.z);
}
Fun4.call(this);//1
var person = {
z: 2
};
Fun4.call(person);//2
以上内容来自
Javascript 的 this 用法