【发布时间】:2015-07-22 19:07:06
【问题描述】:
根据请求,我有许多模块正在加载。我需要一个仅限于该连接的全局变量,而不是整个代码库的全局范围。
这是来自主模块的一些示例代码。
var MainModule = function() {
// Do something fun
}
MainModule.prototype.Request = function() {
// Do more fun things
var Mod = require('./MyModule');
var MyModule = new Mod(this);
}
module.exports = MainModule;
.
var MyModule = function(MainModule) {
// Make MainModule Global ??
this.MainModule = MainModule;
}
MyModule.prototype.Foo = function() {
AnotherFunction('321312',function() {
// Need MainModule in this callback
}
}
module.exports = MyModule;
我希望 MainModule 中的 this 在 MyModule 中作为另一个名称是全局的。我发现处理这个问题的唯一方法是创建this.MyModule,但这在每个模块上变得很麻烦,当有很多子模块时更麻烦。
有没有一种干净的方法来处理获取一个在模块范围内可以是全局的变量?
【问题讨论】:
-
“每个连接”没有全局环境,因此没有全局变量。如果您为该模块的每个请求构建一个实例,那么该实例的属性是您将获得的最佳属性。
-
不幸的是,我仍然在通过回调向下传递该实例时遇到问题。
-
请参阅How to access the correct
this/ context inside a callback?。或者,不要在原型上定义您的方法,而是在构造函数中定义您的方法,并直接访问您的参数声明的MainModule变量。
标签: javascript node.js module