【问题标题】:Javascript environment sharing between different script tags in browser浏览器中不同脚本标签之间的Javascript环境共享
【发布时间】: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


    【解决方案1】:

    在您的 environment.js 中创建的 mod_platform_factory 被您在 main.js 中创建的 mod_platform_factory 覆盖。

    后者没有连接。

    【讨论】:

    • 感谢您的回复。我将 main.js 中的第二个重命名为 mod_platform_factory_test,它没有任何区别。
    • mod_platform_factory_test 也不会有连接,在您的 main,js 中,您将拥有 top 引用先前创建的 mod_platform_factory(在 environment.js 中创建的那个)。 mod_platform_factory 确实有连接。
    猜你喜欢
    • 2021-10-06
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多