2012-01-16 79 views
0

我看到這個代碼:爲什麼這個對象聲明在node.js中工作以及如何聲明一個靜態變量?

var myNet = require ("net"); 

,並在一些功能:

function foo (x,y) { 
    var myNewNet = new myNet();  
    myNewNet.createServer(x,y); 

} 

爲什麼上面的代碼創建一個新的對象?背後有什麼機制?

還有一個問題,我該如何在node.js中創建一個靜態變量,例如必須是唯一的id號。

我來到這個選項靜態變量:

var id =0; 

,並把它放在全球範圍內,可以嗎?

回答

1

require聲明基本上就像是一個導入;它需要一個外部庫並使其在您的代碼中可用。

如果你看過外部模塊,你會注意到它只是普通的node.js js代碼。它有EXPORT語句。這些陳述是當你需要某些東西時可用的東西。退房http://howtonode.org/creating-custom-modules

有一個GLOBAL關鍵字在node.js中可以使用,使一些全球

GLOBAL.IP_ADDRESS = "..."

由於@Raynos說,這通常不是一個好主意,要做到這一點,那麼另一個選擇是從模塊輸出恆定的,所以你可以創建一個模塊並做

exports.STATIC_CONSTANT = "";

,然後,一旦你導入模塊,你可以做

var mod = require('mymodule'); 
mod.STATIC_CONSTANT; 

編輯,回答您發表評論,該行

var myNet = require("net")

原因myNet是無論net模塊出口。必須導出函數,所以

var newNet = new myNet()

創建.NET對象的新實例。從那裏

myNewNet.createServer()

只是調用您剛剛創建的對象的方法。

+0

謝謝,但爲什麼語法: var required = require(「someModule」); var newVar = new required();是好的,爲什麼它可以工作? – 0x90 2012-01-16 14:31:48

+0

zozo123更新了我的答案 – hvgotcodes 2012-01-16 14:34:42

+2

全局變種是邪惡的。 _永遠不要在node_ – Raynos 2012-01-16 14:40:33