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

举报
愚公搬代码 发表于 2021/10/19 00:07:25 2021/10/19
【摘要】 保护代理 <script> //主体,发送 function sendMsg(msg) { console.log(msg); } //代理 ...

保护代理

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


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

虚拟代理

<!-- 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); 
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

缓存代理

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。

原文链接:codeboy.blog.csdn.net/article/details/106962913

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。