Javascript Singleton Pattern

Singleton Pattern ,Github上有一些讲JavaScript Design Pattern的例子,当时没有保存地址下来。我突然想弄明白模式之一的单例模式。看了一篇在新浪博客和腾讯前端博客的文章,各有各精彩。引入那腾讯作者的一句话,“在平时的代码中也不知不觉用到了一些设计模式. 就像多年前我明白老汉推车是什么回事的时候也想过尼玛原来这就是老汉推车”。尼玛的,我最近也有在用单例,只是不知道原来它就是叫单例。看完后,我明白了高手原来就是比普通人再做多一件事,让事情更加简单化。

var singleton = function( fn ){
    var result;
    return function(){
        return result || ( result = fn .apply( this, arguments ) );
    }
}
 
var createMask = singleton( function(){
 
     return document.body.appendChild( document.createElement('div') );
 
 })

直接上代码了,博客里讲的是创建一个弹出窗口的遮罩层,这个DIV一般只要创建一次便可以了,所以使用了单例来解决是比较好的。这里的核心是这个singleton的函数,传入一个函数,然后把这个结果保存起来,下次创建的时候,会查看这个result变量,如果已经创建了,则返回。

参考资料:

http://www.alloyteam.com/2012/10/common-javascript-design-patterns/

http://blog.sina.com.cn/s/blog_550ffb0b0100nv4p.html

posted @ 2012-12-10 09:57  e.e.p  阅读(177)  评论(0编辑  收藏  举报