JavaScript中的“this”在Node中代表什么?
我有这个代码如下:
this.color = "red"; var o = {color: "blue"}; function sayColor() { console.log(this.color); } sayColor(); sayColor.call(this); sayColor.call(o);
@Jim Deville,
这里有新的发现:
- 当我在浏览器中运行该代码片段时:它不断输出“红色,红色,蓝色” 。
- 当我在节点terminal直接运行它:它也连续输出“红色,红色,蓝色” 。
- 但是当我把这个代码保存为一个文件functionTypeThisExample.js,并且在terminal执行
node functionTypeThisExample.js
时,它输出“undefined,red,blue” 。
所以我的问题是在最后的情况发生了什么?
this
在节点上与JS中没有什么不同。 它是表示当前上下文的对象。
this.color = "red";
在这里,这是全局对象
var o = {color: "blue"}; function sayColor() { console.log(this.color); } sayColor();
在这种情况下,这仍然是全球性的对象
sayColor.call(this);
这是全局对象,但通过调用应用,而不是“默认”
sayColor.call(o);
这是o
当我在节点(OS X上为0.6.18)上运行它时,我会像在浏览器中那样得到“红色,红色,蓝色”。