JavaScript中的this

参考文献:

本文主要参阅 http://www.jb51.net/article/65850.htm,按照原作者的讲解进行代码运行和个人总结。

然后有结合http://www.cnblogs.com/xxxxBW/p/4914567.html中bind,以及http://www.jb51.net/article/81556.htm中的node.js 中的this介绍。

正文:

本篇文章,主要强调 this的四种基本使用方法,理解这四种用法。

第一,函数有所属对象时,函数中的 this指向所属对象。

可以从下图中看出,fun1是obj对象中的一个方法,所以此方法由所属,指向obj。那么this.value也自然是obj中的值。



1.1 函数有所属对象时,函数中的this指向所属对象

这里要注意另外一点,就是如果采用了以下方式创建/封装一个对象,此中的this,是指向封装的对象的。这里的方法是有归属的,是封装对象的成员。这个要与我们将要提到的第二点进行区分。


1.1.1 封装函数时,其成员方法的this指向该对象


第二,函数没有所属对象时,this 指代window/global。

通俗来说,就是“没主的函数,它就属于全局”。我们从下图22-23行可以看出,this出现在函数fun3中,而fun3并没有绑定到任何作用域,即使fun3在fun2的函数体中定义。

这里要强调一下,无论是javascript,还是node.js,没有所属的函数中的this都是指代window/global,但是当你创建一个js 文件,如下图13-15行所示。显然,在javascript中,这里的this自然就是window/global,因为其处在全局中。但是,在node.js中,大家注意一下,这里并不是全局。

1.2 没有所属的函数中的this,指向全局

第三 构造函数中的this,指代构造函数new出的实例


1.3构造函数中的this,指向对应的实例

第四 apply,call,bind的第一个参数,是函数的绑定对象,指代this。


1.4 apply,call,bind中的this

你可能感兴趣的:(JavaScript中的this)