代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。
写一个缓存代理计算价格的例子:
var prices = function() {
console.log('开始计算总价');
var a = 0;
for (var i = 0, l = arguments.length; i < l; i++) {
a = a + arguments[i];
}
return a;
}
var proxyCalculation = (function() {
var cache = {};
return function() {
var args = Array.prototype.join.call(arguments, ',');
if (args in cache) {
return cache[args];
}
return cache[args] = prices.apply(this, arguments);
}
})();
console.log(proxyCalculation(10, 20));
console.log(proxyCalculation(10, 20));
// 开始计算总价
// 30
// 30
上面的例子用proxyCalculation
来代理prices,把缓存功能设置在proxyCalculation中。当第二次价格列表一样的时候,这样就可以快速的得到结果。
网友评论