参考文献:
本文主要参阅 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中的值。
这里要注意另外一点,就是如果采用了以下方式创建/封装一个对象,此中的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中,大家注意一下,这里并不是全局。