js与设计模式单例

通常我们会有这样的需求,制作一个模态窗口,我们用一个与body一样大的div来覆盖整个页面,当作一个荫罩层,那么此div应该是全局的而且唯一的。
利用js闭包的特性,写出以下代码。
 
var createMask = function(){
  var mask;
  return function(){
       return mask || ( mask = document.body.appendChild( document.createElement('div') ) )
  }
}()
 
那么我们现在拥有一个createMask()方法用于创建全局的div。包内有一个mask变量,用于在全局作用域保存这个div,并且不会因为这个函数的执行完毕而丢失。
原文地址:https://www.cnblogs.com/bugluo/p/2778822.html