• 《JS设计模式笔记》 1,单例模式


     1 <script type="text/javascript">
     2     //单例模式
     3     
     4     //1,每次点击都会生成一个新的div
     5     var createMask=function  () {
     6         return document.body.appendChild(document.createElement(div));
     7     }
     8     $("button").click(function(){
     9         var mask=createMask();
    10         mask.show();
    11     });
    12     
    13     //2,有可能这个mask会永远也用不上
    14     var mask=document.body.appendChild(document.createMask("div"));
    15     $("button").click(function(){
    16         mask.show();
    17     });
    18     
    19     //3,1)函数体内改变了变量mask的引用,在多人协作的项目中,createMask是个不安全的函数。2)另一方面,mask这个全局变量不是非需不可。
    20     var mask;
    21     var createMask=function(){
    22         if(mask){
    23             return mask;
    24         }
    25         else{
    26             mask=document.body.appendChild(document.createElement(div));
    27             return mask;
    28         }
    29     };
    30     //4,用闭包的形式,只生成一个mask
    31     var createMask=function(){
    32         var mask;
    33         return function(){
    34             return mask||(mask=document.body.appendChild(document.createElement(div)));
    35         };
    36     }()
    37     //5,最终版本
    38     var singleton=function(fn){
    39         var result;
    40         return function(){
    41             return result||(result=fn.apply(this,arguments));
    42         }
    43     }
    44     var createMask=singleton(function(){
    45         return document.body.appendChild(document.createElement("div"));
    46     });
    47     用一个变量来保存第一次的返回值,如果它已经被赋过值,那么在以后的调用中,优先返回该值,
    48     </script>
  • 相关阅读:
    理解钩子Hook以及在Thinkphp下利用钩子使用行为扩展
    ThinkPHP 分页类的使用及退出功能的实现
    ThinkPHP登录功能代码
    thinkphp遗留问题
    ThinkPHP随笔
    ThinkPhp循环出数据库中的内容并输出到模板
    thinkphp常用Config.php配置项
    thinkphp笔记
    PHP面向对象学习七 总结
    Trie树
  • 原文地址:https://www.cnblogs.com/lvyongbo/p/4699679.html
Copyright © 2020-2023  润新知