好程序員教程分享Javascript設計模式
方法一 對象字面量表示法
在對象字面量表示法中,一個對象被描述爲一組包含在大括號中,以逗號分隔的 name/value 對。對象內的名稱可以是字符串或標識符,後面跟着一個冒號。對象中最後一個 name/value 對不加逗號,否則會出錯。
/**
1.
* 使用字面量表示法定義模塊
2.
*/
3.
var myModule = {
4.
myProperty: "someValue",
5.
myConfig: {
6.
useCaching: true,
7.
language: "en"
8.
},
9.
myMethod: function () {
10.
console.log("the first method");
11.
},
12.
myMethod2: function () {
13.
console.log("the second method");
14.
},
15.
};
console.log(myModule.myProperty); // someValue
1.
console.log(myModule.myConfig); // {useCaching: true, language: 'en'}
2.
console.log(myModule.myConfig.useCaching); // true
3.
myModule.myMethod(); // the first method
4.
myModule.myMethod2(); // the second method
方法二 Module模式
Module模式使用閉包封裝“私有”狀態和組織。它提供了一種包裝混合公有/私有方法和變量的方式
,防止其污染全局命名空間,防止其泄露到全局作用域。通過該模式,只需返回一個公有API,而其他的一切則都維持在私有閉包裏。
/**
1.
* Module方法定義
2.
*/
3.
var myNameSpace = (function () {
4.
// 私有變量
5.
var myPrivateVar = 0;
6.
// 私有函數
7.
var myPrivateMethod = function (foo) {
8.
console.log(foo);
9.
};
10.
// 公有API
11.
return {
12.
// 公有變量
13.
myPublicVar: "foo",
14.
// 公有方法
15.
myPublicFunction: function (bar) {
16.
// 操作私有變量
17.
myPrivateVar ++;
18.
// 調用私有函數
19.
myPrivateMethod(bar);
20.
},
21.
// 公有方法二
22.
myPublicFunction2: function () {
23.
console.log("success");
24.
}
25.
};
26.
}) ();
console.log(myNameSpace.myPrivateVar); // undefined
1.
2.
console.log(myNameSpace.myPrivateVar); // undefined
3.
console.log(myNameSpace.myPublicVar); // foo
4.
console.log(myNameSpace.myPublicFunction); // Function
5.
myNameSpace.myPublicFunction2(); // success
6.
myNameSpace.myPublicFunction("i am first"); // i am first