美文网首页好程序员大前端
好程序员教程分享Javascript设计模式

好程序员教程分享Javascript设计模式

作者: ab6973df9221 | 来源:发表于2019-04-19 16:36 被阅读1次

      好程序员web前端培训教程分享Javascript设计模式

    方法一对象字面量表示法  在对象字面量表示法中,一个对象被描述为一组包含在大括号中,以逗号分隔的name/value 对。对象内的名称可以是字符串或标识符,后面跟着一个冒号。对象中最后一个 name/value 对不加逗号,否则会出错。  /**

    [if !supportLists]1. [endif]<p><font size="3">  * 使用字面量表示法定义模块</font></p>

    [if !supportLists]2. [endif]<p><font size="3">  */</font></p>

    [if !supportLists]3. [endif]<p><font size="3">  var myModule = {</font></p>

    [if !supportLists]4. [endif]<p><font size="3">  myProperty: "someValue",</font></p>

    [if !supportLists]5. [endif]<p><font size="3">  myConfig: {</font></p>

    [if !supportLists]6. [endif]<p><font size="3">  useCaching: true,</font></p>

    [if !supportLists]7. [endif]<p><font size="3">  language: "en"</font></p>

    [if !supportLists]8. [endif]<p><font size="3">  },</font></p>

    [if !supportLists]9. [endif]<p><font size="3">  myMethod: function () {</font></p>

    [if !supportLists]10. [endif]<p><font size="3">  console.log("the first method");</font></p>

    [if !supportLists]11. [endif]<p><font size="3">  },</font></p>

    [if !supportLists]12. [endif]<p><font size="3">  myMethod2: function () {</font></p>

    [if !supportLists]13. [endif]<p><font size="3">  console.log("the second method");</font></p>

    [if !supportLists]14. [endif]<p><font size="3">  },</font></p>

    [if !supportLists]15. [endif]<p><font size="3">  };</font></p>

      console.log(myModule.myProperty); // someValue

    [if !supportLists]1. [endif]<p><font size="3">  console.log(myModule.myConfig); // {useCaching: true, language: 'en'}</font></p>

    [if !supportLists]2. [endif]<p><font size="3">  console.log(myModule.myConfig.useCaching); // true</font></p>

    [if !supportLists]3. [endif]<p><font size="3">  myModule.myMethod(); // the first method</font></p>

    [if !supportLists]4. [endif]<p><font size="3">  myModule.myMethod2(); // the second method</font></p>

      方法二Module模式  Module模式使用闭包封装“私有”状态和组织。它提供了一种包装混合公有/私有方法和变量的方式  ,防止其污染全局命名空间,防止其泄露到全局作用域。通过该模式,只需返回一个公有API,而其他的一切则都维持在私有闭包里。  /**

    [if !supportLists]1. [endif]<p><font size="3">  * Module方法定义</font></p>

    [if !supportLists]2. [endif]<p><font size="3">  */</font></p>

    [if !supportLists]3. [endif]<p><font size="3">  var myNameSpace = (function () {</font></p>

    [if !supportLists]4. [endif]<p><font size="3">  // 私有变量</font></p>

    [if !supportLists]5. [endif]<p><font size="3">  var myPrivateVar = 0;</font></p>

    [if !supportLists]6. [endif]<p><font size="3">  // 私有函数</font></p>

    [if !supportLists]7. [endif]<p><font size="3">  var myPrivateMethod = function (foo) {</font></p>

    [if !supportLists]8. [endif]<p><font size="3">  console.log(foo);</font></p>

    [if !supportLists]9. [endif]<p><font size="3">  };</font></p>

    [if !supportLists]10. [endif]<p><font size="3">  // 公有API</font></p>

    [if !supportLists]11. [endif]<p><font size="3">  return {</font></p>

    [if !supportLists]12. [endif]<p><font size="3">  // 公有变量</font></p>

    [if !supportLists]13. [endif]<p><font size="3">  myPublicVar: "foo",</font></p>

    [if !supportLists]14. [endif]<p><font size="3">  // 公有方法</font></p>

    [if !supportLists]15. [endif]<p><font size="3">  myPublicFunction: function (bar) {</font></p>

    [if !supportLists]16. [endif]<p><font size="3">  // 操作私有变量</font></p>

    [if !supportLists]17. [endif]<p><font size="3">  myPrivateVar ++;</font></p>

    [if !supportLists]18. [endif]<p><font size="3">  // 调用私有函数</font></p>

    [if !supportLists]19. [endif]<p><font size="3">  myPrivateMethod(bar);</font></p>

    [if !supportLists]20. [endif]<p><font size="3">  },</font></p>

    [if !supportLists]21. [endif]<p><font size="3">  // 公有方法二</font></p>

    [if !supportLists]22. [endif]<p><font size="3">  myPublicFunction2: function () {</font></p>

    [if !supportLists]23. [endif]<p><font size="3">  console.log("success");</font></p>

    [if !supportLists]24. [endif]<p><font size="3">  }</font></p>

    [if !supportLists]25. [endif]<p><font size="3">  };</font></p>

    [if !supportLists]26. [endif]<p><font size="3">  }) ();</font></p>

      console.log(myNameSpace.myPrivateVar); // undefined

    [if !supportLists]1. [endif]

    [if !supportLists]2. [endif]<p><font size="3">  console.log(myNameSpace.myPrivateVar); // undefined</font></p>

    [if !supportLists]3. [endif]<p><font size="3">  console.log(myNameSpace.myPublicVar); // foo</font></p>

    [if !supportLists]4. [endif]<p><font size="3">  console.log(myNameSpace.myPublicFunction); // Function</font></p>

    [if !supportLists]5. [endif]<p><font size="3">  myNameSpace.myPublicFunction2(); // success</font></p>

    [if !supportLists]6. [endif]<p><font size="3">  myNameSpace.myPublicFunction("i am first"); // i am first</font></p>

    相关文章

      网友评论

        本文标题:好程序员教程分享Javascript设计模式

        本文链接:https://www.haomeiwen.com/subject/fyqcgqtx.html