我想使用显示模块模式设置一些代码。我想设置子模块以便能够访问主模块的私有功能,但我坚持如何做到这一点。
这是我一直在玩的一些示例代码:
var Module = (function() {
function B(){
console.log("B");
};
return {
//B: B
};
})();
var Module = Module || {};
Module.Utils = (function() {
function C() {
B();
};
return {
C: C
}
}).apply(Module);
Module.Utils.C();
我怎样才能做到这一点,以便我可以从 Utils 模块调用私有函数?
编辑:
Jsut 澄清我希望能够创建一个添加到主模块的子模块,所以如果它有助于子模块也可以是模块。我正在阅读:http ://www.sitepoint.com/modular-design-patterns-in-javascript/它使用 apply() 添加第二个模块,但必须使用扩展和私有化功能将模块添加到主要的。如果可能的话,我想远离它?
另一个编辑 简而言之,我希望将一个主模块和第二个模块放在一个仅用于一个部分的新文件中。我需要第二个模块仍然能够引用主模块的私有函数。这可能吗?
这是我提到的代码:
//protected utility functions
utils =
{
//add properties to an object
extend : function(root, props)
{
for(var key in props)
{
if(props.hasOwnProperty(key))
{
root[key] = props[key];
}
}
return root;
},
//copy an object property then delete the original
privatise : function(root, prop)
{
var data = root[prop];
try { delete root[prop]; }
catch(ex) { root[prop] = null; }
return data;
}
};