天天看點

好程式員教程分享Javascript設計模式

  好程式員教程分享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

繼續閱讀