我想使用揭示模塊模式設置一些代碼。 我想設置子模塊,以便能夠訪問主模塊的私有功能,但我堅持如何做到這一點。揭示模塊模式添加子模塊和訪問私人功能
下面是一些示例代碼,香港專業教育學院一直在玩:
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