比利月亮示出一個好的開始,但是使用對象文字的問題,就是可以不交叉引用其他字段/功能/特性。
我更喜歡顯露模塊模式(見http://www.wait-till-i.com/2007/08/22/again-with-the-module-pattern-reveal-something-to-the-world/)
透露出模塊模式結合了閉包來提供內部私有函數/字段的自動執行功能,(各種)的開發,並允許您傳遞參數來初始化命名空間對象。
var namespacedObject = function(param) {
var settings = param || someDefaultSetting, //default if no param supplied
somePrivateField = "someValue",
somePublicField = "i'm public";
//define some method we will later make public
function toggleComments(){
$("comments-section").hide();
$("comments-button").click(function(){
$(this).value= somePrivateField;
return false;
});
}
//this is where the magic happens,
//return object with all public fields/functions
return {
toggleComments : toggleComments,
somePublicField : somePublicField
};
}(someParam);
您可以看到命名空間的對象包含私有字段somePrivateField
,這可以從可公開訪問的方法引用。另外,請注意我已經露出了公共領域,並接受了一些PARAMS,我可以使用功能等/引用(你可以,如果沒有在傳遞它默認爲一些默認
可以這樣使用:
namespacedObject.toggleComments();
alert(namespacedObject.somePublicField);
alert(namespacedObject.somePrivateField); //undefined - it's private of course!
一個原因,我想這是它很容易看到什麼是公共/私人通過在從自動執行功能
希望這是有幫助返回的對象字面只是看了一眼