// 乘积函数 var mult = function(){ console.log( '开始计算乘积' ); var a = 1; for ( var i = 0, l = arguments.length; i < l; i++ ){ a = a * arguments[i]; } return a; };
// 缓存代理函数 var proxyMult = (function(){ // 缓存结果 var cache = {}; returnfunction(){ // 将参数转化为字符串 var args = Array.prototype.join.call( arguments, ',' ); // 遍历缓存结果如果存在直接返回结果 if ( args in cache ){ return cache[ args ]; } // 不存在进行计算并保存结果 return cache[ args ] = mult.apply( this, arguments ); } })();
/**************** 计算乘积 *****************/ 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 = {}; returnfunction(){ // 将参数转换成字符串 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 )