javascript中this的用法

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。
原文地址:https://www.cnblogs.com/boyzi/p/4387236.html