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

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

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

那么我们可以在任何我们想要的地方调用fname – 现在它是一个全局函数。 是否有可能在节点中做类似的事情,在那里我们添加function到一个特定的对象,他们可以在文件的其余部分被调用:

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

我不是在寻找一个全局遍历所有文件的东西,而是在这个文件中保留“全局命名空间污染”的东西,我可以调用所有这些函数,而不需要使用obj.fname

编辑(为了清晰):

至于我的testing显示 – 你不能访问模块的本地范围。 它是(或者像)闭包,你不能编程访问它的范围。 所以你最好的select是保持全局variables的全局 (aka root )对象,但是对于整个应用程序来说是一样的(所以每个模块都有它的存取权限)。

所以,最好的做法是每次做快捷键:

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

使用“全局”作为命名空间:

 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/

root是我想要的对象:

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