JS OOP - 多个文件中的结构

时间:2013-06-06 06:55:31

标签: 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
 */
PG_GuiHelper.addSection('hovertip',function(){

    var section = this;

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

现在我有第二个文件,其中包含表单的帮助程序。还有与此代码相同的ns闭包。两者都很好。

目标:

档案ns.js

(function (ns) {

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

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

现在问我的问题:如何在我现有的hovertip帮助器中添加一个新的“section”来至少获得这个调用:PG_Library.guiHelper.hovertip.init();

现有的调用现在是:PG_GuiHelper.hovertip.init()。我希望你明白我的意思。 所有文件均为1 ns。每个文件都可以有自己的子部分。所有都用PG_Library.section.subsection.function()处理。

2 个答案:

答案 0 :(得分:1)

使用此:

window.PG_Library.guiHelper = window.PG_GuiHelper;

在您的情况下,您将PG_LibraryPG_GuiHelper添加到window,这样就可以了。

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

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;

答案 1 :(得分:0)

您只需将现有的PG_GuiHelper添加为PG_Library的新部分:

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