Javascript JS OOP-多文件中的结构
我是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
(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;
});