JavaScript中this的用法
this 是 JavaScript 语言的一个关键字。
它代表函数运作时,自动生成的一个内部对象,只能在函数内部使用。比如:
随着函数使用场合的不同,this
的值会发生变化。但是有一个总的原则,那就是this指的是谁,调用函数的那个对象。
下面分四种情况,详细讨论 this
的用法:
情况一:纯粹的函数调用
这是函数的最通常用法,属于全局性调用,因此 this
就代表全局对象 Global。
请看下面这段代码,它的运行结果是 1。
|
|
为了证明 this
就是全局对象,我对代码做一些改变:
|
|
运行结果还是 1。再变一下:
|
|
情况二:作为对象方法的调用
函数还可以作为某个对象的方法调用,这是 this
就指这个上级对象。
|
|
情况三:作为构造函数调用
所谓构造函数,就是通过这个函数生成一个新对象(object)。这时,this
就指这个新对象。
|
|
运行结果为 1,为了表明这时 this
不是全局对象。我对代码做一些改变:
|
|
运行结果为 2,表明全局变量 x 的值根本没变。
情况四:apply调用
apply() 是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this
指的就是这第一个参数。
|
|
apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为 0,证明 this
指的是全局对象。
如果把最后一行代码修改为
|
|
运行结果就变成了 1, 证明了这时 this
代表的是对象 o。