在常规浏览器js中,我们可以这样做:
window["fname"] = function(){ /* do something */ };
然后我们可以在任何地方调用fname
- 它现在是一个全局函数。是否有可能在节点中执行类似的操作,我们将函数添加到某个对象,并且可以在文件的其余部分中调用它们:
root["fname"] = function(){ /* do something */ };
fname();
我不是在寻找一个全局覆盖所有文件的东西,只是在这个文件中保留“全局命名空间污染”的东西,我可以按原样调用所有这些函数,而不依赖于{{1} }。
答案 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();