以编程方式将函数添加到根节点对象

时间:2011-09-05 12:53:25

标签: javascript node.js

在常规浏览器js中,我们可以这样做:

window["fname"] = function(){ /* do something */ };

然后我们可以在任何地方调用fname - 它现在是一个全局函数。是否有可能在节点中执行类似的操作,我们将函数添加到某个对象,并且可以在文件的其余部分中调用它们:

root["fname"] = function(){ /* do something */ };
fname();

我不是在寻找一个全局覆盖所有文件的东西,只是在这个文件中保留“全局命名空间污染”的东西,我可以按原样调用所有这些函数,而不依赖于{{1} }。

2 个答案:

答案 0 :(得分:2)

编辑(为清晰起见):

我的测试显示 - 您无法访问模块的本地范围。它是(或就像)闭包,你不能以编程方式访问它的范围。因此,最好的选择是全局(又名 root )对象,它保留全局变量,但对于整个应用程序它是相同的(因此每个模块都可以访问它)。 / p>

所以,你每次都做出最好的快捷方式:

var foo = myModule.foo;
var boo = myAnotherModule.boo;

使用'global'作为命名空间:

global['foo'] = function(){ console.log('foo'); }; // same as global.foo = ...

foo() //prints 'foo' to console

更多信息:

http://www.reddit.com/r/node/comments/jb4dy/adding_to_the_global_namespace_in_nodejs/

答案 1 :(得分:0)

root是我想要的对象:

root["foo"] = function(){ /* blah */ }
foo();