2010-11-09 24 views
6

我使用0.3.1預Node.js的'全球性' 的Node.js的對象

這樣做:

typeof global.parseInt 

結果

'undefined' 

但是按[標籤時]輸入'global'後在控制檯中輸入。給出了函數列表,包括parseInt。

So is parseInt global或者不是的成員?

+0

爲什麼你不簡單''typeof parseInt'?這對我有用。 – jwueller 2010-11-09 11:30:49

+0

是的。我只是想知道這種特質的原因是什麼。 – Art 2010-11-09 11:53:44

回答

9

顯然,global對象不是全局對象,因爲window在瀏覽器中。它(根據#nodejs @ freenode中的micheil)只能在內部使用。關於全球關閉和什麼的事情。

parseIntsetTimeout以及所有這些夥伴都是自己的全局變量。不是任何可見的全局對象的一部分。

+0

這是否意味着裝飾全局對象並不能真正使它可以從模塊中訪問,或者它可以被訪問,但只能作爲其他模塊中全局對象的屬性? – 2012-01-11 09:52:05

+2

無論你對全局對象做什麼,都隨時取消。無論何時內部節點進程需要使用它,都會重置。所以對於任何持久的全局變量來說都是不可靠的。事實上,我見過的只有半秒鐘以上的地方是node-repl(命令行)。 – 2012-01-11 10:14:38

+0

感謝您的評論。這太傷心了:(特別是當很多人在很多地方引導你到全局對象 – 2012-01-11 13:57:06

9

定義變量app.js沒有var,就像myvar='someval'使其可見裏面在您的項目

+0

這是一個直接回答這個問題嗎?我不這麼認爲 – itsbruce 2012-11-22 12:18:54

+0

這是一個答案,可能意圖背後的問題或其他人的意圖在這裏登陸,就像任何答案應該是。謝謝bFunc。 – zupa 2013-02-07 16:22:46

+0

這幫了我很大的忙。thx! – 2016-06-26 15:39:52

12

由於v0.8.14的NodeJS全球的每一個.js似乎跨模塊的工作,如窗口對象在瀏覽器中一樣。

測試:

a.js:

a1 = console.log; // Will be accessed from b.js 
global.a2 = console.log; // Will be accessed from b.js 

require('./b.js'); 

b1('a: b1'); 
b2('a: b2'); 
global.b1('a: global.b1'); 
global.b2('a: global.b2'); 

b.js:

a1('b: a1'); 
a2('b: a2'); 
global.a1('b: global.a1'); 
global.a2('b: global.a2'); 

b1 = console.log; // Will be accessed from a.js 
global.b2 = console.log; // Will be accessed from a.js 

運行a.js輸出:

b: a1 
b: a2 
b: global.a1 
b: global.a2 
a: b1 
a: b2 
a: global.b1 
a: global.b2 
+0

更多的答案。 – Tushar 2013-09-05 17:14:19