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,

这里有新的发现:

  1. 当我在浏览器中运行该代码片段时:它不断输出“红色,红色,蓝色”
  2. 当我在节点terminal直接运行它:它也连续输出“红色,红色,蓝色”
  3. 但是当我把这个代码保存为一个文件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)上运行它时,我会像在浏览器中那样得到“红色,红色,蓝色”。