在普通的浏览器js中,我们可以这样做:
window["fname"] = function(){ /* do something */ };
然后我们可以在任何我们想要的地方调用 fname
- 它现在是一个全局函数。是否可以在 Node 中做类似的事情,我们将函数添加到某个对象,然后可以在文件的其余部分按原样调用它们:
root["fname"] = function(){ /* do something */ };
fname();
我不是在寻找对所有文件全局起作用的东西,只是在这个文件中保持“全局命名空间污染”的东西,我可以按原样调用所有这些函数,而无需求助于 obj .fname
.
最佳答案
编辑(为清楚起见):
据我的测试显示 - 您无法访问模块的本地范围。它是(或类似于)闭包,您不能以编程方式访问它的范围。所以你最好的选择是global(又名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/
关于javascript - 以编程方式向根 Node 对象添加函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7308389/