js单例模式

来源:互联网 发布:手机知乎怎么注册 编辑:程序博客网 时间:2024/05/09 01:12
<h1>第8章  一个人的寂寞——单例模式</h1>   <p>单例模式(Singleton):又被称为单体模式,是只允许实例化一次的对象类。有时我们也用一个对象来规划一个命名空间,井井有条地管理对象上的属性和方法。</p>   <p>模块分明:其实在JavaScript中单例模式除了定义命名空间外,还有一个作用就是通过单例模式来管理代码块的各个模块,比如早期百度tangram,雅虎的YUI都是通过单例模式来控制自己每个模块功能的,   比如tangram中定义命名空间为百度,当添加设置元素class方法,插入一个元素方法时,他们会放到dom模块;当添加事件中阻止事件冒泡方法,阻止事件的默认行为方法的时候,会放到event模块里......</p>   <script>      baidu.dom.addClass      //添加元素类      baidu.dom.append        //插入元素      baidu.event.stopPropagation //阻止冒泡      baidu.event.preventDefault  //阻止默认行为      baidu.event.trim         //去除字符串首位空白字符      baidu.string.encodeHTML  //将字符串进行html编码   </script>   <script>      //创建一个小型的代码库      var A = {         Util: {            util_mathod1: function(){},            util_mathod2: function(){}         },         Tool: {            tool_method1: function(){},            tool_method2: function(){}         },         Ajax: {            get: function(){},            post: function(){}         },         others: {}      }   </script>   <script>      //无法修改的静态变量      var Conf = ( function(){         //私有变量         var conf = {            MAX_NUM: 100,            MIN_NUM: 10,            COUNT: 1000         }         //返回取值器对象         return {           //取值器方法           get: function( name ){              return conf[ name ] ? conf[ name ] : null;           }         }      } )();   </script>   <h1>惰性单例:有时候对于单例对象需要延迟创建,所以在单例中还存在一种延迟创建的形式,也有人称之为“惰性创建”。</h1>   <script>      //惰性载入单例      var LayzSingle = ( function(){         //单例实例引用         var _instance = null;         //单例         var Single = function(){            //这里定义私有属性和方法            return {               property: 10,               method: function(){}            }         };         //获取单例对象接口         return function(){           //如果未创建单例将创建单例           if( !_instance ){              _instance = Single();           };           //返回单例           return _instance;         }      } )()   </script>

0 0