2012-01-16 81 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