JavaScript中的'this'在Node中代表什么?

时间:2012-06-02 03:58:50

标签: javascript node.js

我的代码如下:

this.color = "red";
var o = {color: "blue"};
function sayColor() {
  console.log(this.color);
}
sayColor();
sayColor.call(this);
sayColor.call(o);

@Jim Deville,

以下是新发现:

  1. 当我在浏览器中运行该代码段时:它会连续输出“红色,红色,蓝色”
  2. 当我直接在节点终端中运行时:它还连续输出“红色,红色,蓝色”
  3. 但是当我将该代码保存为文件functionTypeThisExample.js并在终端中执行node functionTypeThisExample.js时,它会输出“undefined,red,blue”
  4. 所以我的问题是在最后一种情况下会发生什么?

1 个答案:

答案 0 :(得分:2)

节点中的

this与JS中的this没有区别。它是表示当前上下文的对象。

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)中运行它时,我会像在浏览器中那样得到“红色,红色,蓝色”。