【发布时间】:2015-05-11 09:31:39
【问题描述】:
我对 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;
环境.js
(function () {
var mod_platform_factory = require("../../../platform/factory.js");
mod_platform_factory.registerService("connection", require("./connection.js"));
})();
为了便于阅读,我删除了这两个文件,并省略了包括 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 对象,没有称为连接的服务。
谁能解释一下我做错了什么?
谢谢
【问题讨论】:
标签: javascript browserify