那些开源程序中让人叹为观止的代码 - 2 单例模式

单例模式

解决问题:只执行一次的函数javascript

开源程序:underscorejava

有时候咱们会须要使用单例模式,好比须要一个函数,这个函数在整个应用运行的时候只被访问一次。若是再次访问就会访问上次的执行结果。缓存

这个需求的一个经典实现能够在underscore的代码中找到:闭包

_.once = function(func) {
    var ran = false, memo;
    return function() {
      if (ran) return memo;
      ran = true;
      memo = func.apply(this, arguments);
      func = null;
      return memo;
    };
  };

once能确保func只调用一次,若是用func返回一个什么对象,这个对象成了单例。源码也比较简单,无非就是用一个标志位来标示是否运行过,缓存返回值。能够说,这是闭包应用的一个比较经典的实例。app

相关文章
相关标签/搜索