Javascript JS OOP-多文件中的结构

Javascript JS OOP-多文件中的结构,javascript,oop,Javascript,Oop,我是js oop的新手,目前为止有以下代码: (function (ns) { ns.addSection = function (name, def) { ns[name] = new def(); } }(this.PG_GuiHelper = this.PG_GuiHelper || {})); /** * HOVERTIP * * shows submenu on click / hover */ P

我是js oop的新手,目前为止有以下代码:

    (function (ns) {

        ns.addSection = function (name, def) {
            ns[name] = new def();
        }

    }(this.PG_GuiHelper = this.PG_GuiHelper || {}));


/**
 * HOVERTIP
 *
 * shows submenu on click / hover
 */
PG_GuiHelper.addSection('hovertip',function(){

    var section = this;

    /**
     * init
     */
    section.init = function() {
        section.registerListener();
    }
现在我有了第二个文件,其中包含表单的帮助程序。同样使用与此代码相同的ns闭包。两者都很好

目标:

文件ns.js

现在我的问题是:我如何向现有的hovertip帮助程序添加一个新的“部分”以至少获得这个调用:PG_Library.guiHelper.hovertip.init()

现有的调用现在是:PG_GuiHelper.hovertip.init()。我希望你明白我的意思。 1 ns函数用于所有文件。每个文件都可以有自己的小节。所有这些都是通过PG_库处理的。section.subsection.function()。

使用以下命令:

window.PG_Library.guiHelper = window.PG_GuiHelper;
在本例中,您将
PG_库
PG_GuiHelper
添加到
窗口
,因此这将起作用

如果您想拥有一个全局(这是一个好主意:-),您可以使用:

var PG = {};

PG.GuiHelper = {};

(function (ns) {

    ns.addSection = function (name, def) {
        ns[name] = new def();
    }

}(PG.GuiHelper));

/**
 * HOVERTIP
 *
 * shows submenu on click / hover
 */
PG.GuiHelper.addSection('hovertip', function() {

    var section = this;

    /**
     * init
     */
    section.init = function() {
        section.registerListener();
    }
});

分别为:
PG.Library.guiHelper=PG.guiHelper

您只需将现有的
PG\u GuiHelper
作为新节添加到
PG\u库中即可:

PG_Library.addSection("guiHelper", function() {
    return PG_GuiHelper;
});

谢谢!这很好,但我不喜欢向window对象添加所有内容,我必须创建函数并单独注册它。在这种情况下,不要使用
this
,因为在您的情况下,
this
引用了
window
。请检查我的编辑,看看如何重构以避免创建多个全局。
PG_Library.addSection("guiHelper", function() {
    return PG_GuiHelper;
});