(精华)2020年6月25日 JavaScript高级篇 设计模式-代理模式

保护代理

<script>
    //主体,发送
    function sendMsg(msg) {
        console.log(msg);
    }
    //代理
    function proxySend(msg) {
        msg = msg.replace(/XT/, '');
        sendMsg(msg);
    }
    proxySend('XT,辛苦的码农')
</script>

虚拟代理

<!-- scroll, resize,keyup 等事件频繁触发会引起卡顿 -->
function scrollHnader(name,age){
    console.log('屏幕滚动了');
}
function debounce2(fn,delay){
    delay = delay || 300;
    if(fn.id){
        clearTimeout(fn.id);
    }
    fn.id = setTimeout(function(){          
        fn();
     },delay);
}
window.onscroll = function(){
    debounce2(scrollHnader.bind(this,'laney'),500); 
}

缓存代理

function add(){
    var arg = Array.from(arguments); //es6
     return arg.reduce(function(a,b){
          return a+b;
     })
}

var proxyAdd = (function(){
    var cache = [];
    return function(){
        var arg = Array.from(arguments).join(','); 
        if(cache[arg]){
            return cache[arg];
        } else {
            var ret=  add.apply(this,arguments);
            cache[arg] = ret;
            return ret;
        }
    }
})();

var k1= proxyAdd(1,2,3,4)
proxyAdd(10,20,30,40)
proxyAdd(10,20,30,40)//取缓存
proxyAdd(10,20,30,40)//取缓存

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚公搬代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值