2012-06-02 25 views
1

我有這樣的代碼如下:JavaScript中的這個功能在Node中代表什麼?

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

@Jim德維爾,

這裏有新的發現:

  1. 當我運行在瀏覽器的代碼片段:它輸出「紅,紅色,藍色「,不斷。
  2. 當我直接在節點終端運行它
  3. :它也輸出「紅,紅,藍」,連續地進行。
  4. 但是當我將該代碼保存爲文件functionTypeThisExample.js並在終端中執行node functionTypeThisExample.js時,它輸出「undefined,red,blue」

所以我的問題是,在最後一種情況會發生什麼?

+0

我們可能不得不看更多的代碼,但它似乎指的是類/對象本身。 – jmort253

+0

你可能是對的。這使我更困惑 – Longerian

+0

在節點:'console.log(這===出口);' –

回答

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

當我在節點(0.6.18在OS X)運行它,不過,我得到「紅,紅,藍」就像你在瀏覽器中做。