好程式員教程分享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
console.log(myModule.myConfig); // {useCaching: true, language: 'en'}
console.log(myModule.myConfig.useCaching); // true
myModule.myMethod(); // the first method
myModule.myMethod2(); // the second method
方法二 Module模式
Module模式使用閉包封裝“私有”狀态群組織。它提供了一種包裝混合公有/私有方法和變量的方式
,防止其污染全局命名空間,防止其洩露到全局作用域。通過該模式,隻需傳回一個公有API,而其他的一切則都維持在私有閉包裡。
* Module方法定義
var myNameSpace = (function () {
// 私有變量
var myPrivateVar = 0;
// 私有函數
var myPrivateMethod = function (foo) {
console.log(foo);
// 公有API
return {
// 公有變量
myPublicVar: "foo",
// 公有方法
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
console.log(myNameSpace.myPublicVar); // foo
console.log(myNameSpace.myPublicFunction); // Function
myNameSpace.myPublicFunction2(); // success
myNameSpace.myPublicFunction("i am first"); // i am first