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设计模式与开发实践

  • 相关阅读:
    C# 后台调用webApi
    WebApi传参详解
    网络爬虫字体解密
    单元测试的简单实用
    JQuery中$.ajax()方法参数详解
    vscode HTML标签换行问题
    C#基础之Assembly 当前项目的程序集GetAssemblies
    RedisHelper
    vue setTimeout 和 this.$nextTick,BMap api
    excel 导出 OpenXml
  • 原文地址:https://www.cnblogs.com/cszdsb/p/6474187.html
Copyright © 2011-2022 走看看