js中的this关键字详解

js中的this关键字详解

这是Javascript语言中的一个关键字。它表示函数运行时自动生成的内部对象,只能在函数内部使用。下面有四种情况。这个的用法有详细讨论,感兴趣的朋友可以了解一下。

这是Javascript语言中的一个关键字。它表示函数运行时自动生成的内部对象,只能在函数内部使用。比如复制代码如下:function test(){

this . x=1;

}该值将根据函数的用法而变化。但是有一个普遍的原则,这是指调用函数的对象。

在以下四种情况下将详细讨论它的用法。

情况一:纯粹的函数调用

这是函数最常见的用法,属于全局调用,所以这代表全局对象Global。

请看下面的代码。它的运行结果是1。复制代码如下:函数test(){

this . x=1;

alert(this . x);

}

test();//1为了证明这是一个全局对象,我对代码做了一些修改:复制代码如下:var x=1;

功能测试(){

alert(this . x);

}

test();//1运行结果还是1。再改一遍:复制代码如下:var x=1;

功能测试(){

this . x=0;

}

test();

警报(x);//0

情况二:作为对象方法的调用

一个函数也可以作为一个对象的方法被调用,在这种情况下,这是指这个上级对象。复制代码如下:函数test(){

alert(this . x);

}

var o={ };

o . x=1;

o.m=测试;

o . m();//1

情况三 作为构造函数调用

所谓构造函数就是通过这个函数生成一个新的对象。此时,这指的是这个新对象。复制代码如下:函数test(){

this . x=1;

}

var o=new test();

alert(o . x);//1运行结果为1。为了说明此时这不是一个全局对象,我对代码做了一些修改:复制代码如下:var x=2;

功能测试(){

this . x=1;

}

var o=new test();

警报(x);//2运行结果是2,说明全局变量x的值根本没变。

情况四 apply调用

Apply()是函数对象的一种方法。它的作用是改变函数的调用对象,它的第一个参数表示改变后的函数的调用对象。因此,这里指的是第一个参数。复制代码如下:var x=0;

功能测试(){

alert(this . x);

}

var o={ };

o . x=1;

o.m=测试;

o . m . apply();//0当apply()的参数为空时,默认调用全局对象。所以此时的运行结果是0,证明这指的是全局对象。

如果最后一行代码修改为复制代码如下:o . m . apply(o);//1运行结果变成1,证明这代表对象o。

js中的this关键字详解