zoukankan      html  css  js  c++  java
  • 缓存代理

    /**************** 计算乘积 *****************/
    var mult = function(){
      var a = 1;
      for ( var i = 0, l = arguments.length; i < l; i++ ){
        a = a * arguments[i];
      }
      return a;
    };
    /**************** 计算加和 *****************/
    var plus = function(){
      var a = 0;
      for ( var i = 0, l = arguments.length; i < l; i++ ){
        a = a + arguments[i];
      }
      return a;
    };
    
    /**************** 创建缓存代理的工厂 *****************/
    var createProxyFactory = function( fn ){
      var cache = {};
      return function(){
        var args = Array.prototype.join.call( arguments, ',' );
        if ( args in cache ){
          return cache[ args ];
        }
        return cache[ args ] = fn.apply( this, arguments );
      }
    };
    var proxyMult = createProxyFactory( mult ),
    proxyPlus = createProxyFactory( plus );
    alert ( proxyMult( 1, 2, 3, 4 ) ); // 输出: 24
    alert ( proxyMult( 1, 2, 3, 4 ) ); // 输出: 24
    alert ( proxyPlus( 1, 2, 3, 4 ) ); // 输出: 10
    alert ( proxyPlus( 1, 2, 3, 4 ) ); // 输出: 10

     

     摘自JavaScript设计模式与开发实践

  • 相关阅读:
    Linux进程监控命令
    自学Java第九天
    自学Java第十天
    自学Java第八天
    自学Java第七天
    自学Java第六天
    Java第五天
    Java练习第四天
    自学Java第三天
    自学Java第二天
  • 原文地址:https://www.cnblogs.com/cszdsb/p/6474187.html
Copyright © 2011-2022 走看看