<h1>用高阶函数动态创建代理</h1>
<p>通过传入高阶函数这种灵活的方式,可以为各种计算方法创建动态代理。现在这些计算方法被当做参数传入一个专门用于创建缓存代理的工厂中,
这样一来,我们就可以为乘法、加法、减法等创建缓存代理。</p>
<script>
var mult = function(){
console.log(1);
var a = 1;
for(var i = 0 ; i < arguments.length ; i++){
a = a * arguments[i];
};
return a;
};
var plus = function(){
var a = 0;
for(var i= 0 ; i<arguments.length; i++ ){
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];
}else{
return cache[args] = fn.apply( this, arguments );
}
}
};
var proxyMult = createProxyFactory( mult ),
proxyPlus = createProxyFactory( plus );
console.log( proxyMult( 1,2,3,4 ) );
console.log( proxyMult( 1,2,3,4 ) );
console.log( proxyPlus( 1,2,3,4 ) );
console.log( proxyPlus( 1,2,3,4 ) );
</script>
<p>其他代理模式如:1.防火墙代理:控制网络资源的访问,保护主题不让“坏人”接近;2.远程代理:为一个对象在不同的地址空间提供局部代表;
3.保护代理:用于对象有不同访问权限的情况;4.智能引入代理:取代了简单的指针,他在访问对象执行一些附加操作时,比如计算一个对象被引用的次数;...</p>
js用高阶函数动态创建缓存代理
最新推荐文章于 2022-12-02 19:11:12 发布