码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-08-03 18:45:18      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

 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>

 

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

标签:

原文地址:http://www.cnblogs.com/terry01/p/4699679.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!