假设我有main.js模块,shared.js和foo.js模块。
main.js文件如下:
function Main(){
this.shared = new Shared();
}
Main.prototype.getFoo(){
return new Foo();
}
现在,为了工作,Foo需要共享'在Main中创建的实例,除了传递'共享' Foo让Foo可以随时访问“共享”。实例
编辑:主要实例化一次。
答案 0 :(得分:0)
您可以使用全局变量来执行此操作,但这不是适当的方法。更好的是你可以使用require()来做到这一点。在main.js中添加以下内容:
module.exports = Main;
现在在任何其他模块中你只需要它。
var Main = require('./main.js');
就是这样。这也适用于不同的包。
答案 1 :(得分:0)
我能够通过直接将共享实例传递给导出来解决这个问题。
shared.js:
module.exports = new Shared();
function Shared(){
...
}
main.js:
function Main(){
this.shared = require('./shared.js');
}
Main.prototype.getFoo = function(){
return new Foo();
}
foo.js:
function Foo(){
this.shared = requrie('./shared.js');
}
这样Foo将使用Main中使用的相同“共享”实例,而不必传递它。我不确定这是否是一种“正确”的方式来实现我的需求,但它正在发挥作用。