0

我有两个文件加载到浏览器。

一个在初始调用中直接作为嵌入式脚本加载。

另一个是通过创建脚本节点并写入 .innerHTML 属性来动态加载的。

我必须这样做。

两个 JavaScript 片段都封装在模块模式中。

我可以像这样给他们相同的命名空间吗:

伪代码

var ns = Module Pattern 1

var ns = Moudule Pattern 2

如果没有,是否有另一种方法给它们相同的名称空间,以便当它们返回函数时我可以统一访问这些函数?

ns.function1();
ns.function2();

因为这是针对一个应用程序,所以我希望只有一个命名空间。但正如我提到的,我必须加载两个片段。

谢谢

4

1 回答 1

1

使用任何合理的 mixin 实现,您可以尝试以下操作:

var ns = ns || {};
mixin(ns, Module Pattern 1);

var ns = ns || {};
mixin(ns, Module Pattern 2);

然后可以按任何顺序加载这些。


或者,稍微更改您的模块模式以接受命名空间对象作为参数并为两者提供相同的参数:

var ns = ns || {};
(function(namespace) {
    // ...
    namespace.function1 = //...
}(ns));   

// (again for module 2)
于 2012-07-18T16:42:06.950 回答