我是JavaScript的新手,来自c ++背景我发现自己有点困惑。我有一个javascript文件为另一个javascript文件设置一个工作环境工厂类,如下所示:
<body>
<script src = "environment.js" ></script>
<script src = "main.js" ></script>
</body>
这个想法是不同的index.html将有不同的environment.js文件,它以不同的方式配置环境但共享相同的main.js文件。
我还有一个简单的factory.js文件,它被environment.js和main.js所需(这是environment.js配置和main.js使用的)
Factory.js
function PlatformFactory(){
this._factories = {};
}
PlatformFactory.prototype.registerService = function(name, service) {
this._factories[name] = service;
}
PlatformFactory.prototype.requestService = function(name) {
if (name in this._factories) {
return this._factories[name];
}
throw Error("No service called " + name + " found in platform factory");
}
var factory = new PlatformFactory();
module.exports = factory;
Environment.js
(function () {
var mod_platform_factory = require("../../../platform/factory.js");
mod_platform_factory.registerService("connection", require("./connection.js"));
})();
我已经删除了这两个文件以便于阅读和ommited包括connection.js代码,因为我认为它是不必要的。一切都按预期工作,连接对象愉快地位于单个PlatformFactory对象的_factories中。
然后它开始执行main.js
var mod_platform_factory = require("../../libs/platform/factory.js");
$(document).ready(function () {
var connection = mod_platform_factory.requestService("connection");
connection.connect();
}
)
现在我从来没有到达connection.connect()行,因为requestService函数抛出了我放在PlatformFactory.requestService中的错误。查看PlatformFactory._factories对象,没有名为connection的服务。
有人可以解释一下我做错了吗?
由于
答案 0 :(得分:0)
在environment.js中创建的mod_platform_factory将被您在main.js中创建的mod_platform_factory覆盖。
后者没有连接。