我想使用揭示模块模式设置一些代码。 我想设置子模块,以便能够访问主模块的私有功能,但我坚持如何做到这一点。揭示模块模式添加子模块和访问私人功能
下面是一些示例代码,香港专业教育学院一直在玩:
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的模块调用私有函数?
编辑:
仅仅指刚澄清我希望能够创建一个被添加到主模块的子模块,所以如果它可以帮助子模块可模块为好。我正在阅读: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;
}
};
你问你为什么不能从'C()'调用'B()'? – Matt
你不能,它是**私人**?你将不得不导出它,并调用'Module.B' – Bergi
我已经编辑了上面的内容,试图澄清一下id做什么 – Lee