代理模式
代理模式的定义:为一个对象提供一个代用品或占位符,以便控制对它的访问
代理模式被运用到vue的响应式数据上,在ES6之前用Object.defineProperty,在ES6后使用Proxy来实现代理。
虚拟代理
虚拟代理用来收集某个时间内对代理对象的访问,在某个时间时把收集到的访问全部执行,某种意义上可以看作是带有收集功能的防抖。
以点击事件为例:
<span>2</span><button>+1</button><script>function add(addNum) { span.innerText += addNum;}btn.addEventListener("click", function (event) { add(3);});</script>这是个很简单的操作,点击一下按钮,页面上的数字会逐渐笑得更开心。
假设点击事件是个会向服务器发送请求的操作,如果用户疯狂点击,会给服务器带来巨大压力,这时候可以这样设计:无论用户点击了多少次,只有在点击另一个确定按钮后才会发送请求,这样就既能确保操作的有效性还能提升性能。
function add(addNum) { span.innerText += addNum;}const proxyAdd = (function () { let number = ""; return { input(addNum) { number += addNum; }, add() { add(number); }, };})();btn.addEventListener("click", function (event) { proxyAdd.input(3);});emit.addEventListener("click", function (event) { proxyAdd.add();});这样就通过proxyAdd实现了对add方法的虚拟代理。
缓存代理
在JS中实现缓存代理和单例模式都是一个思路:使用闭包制造一个缓存,如果有缓存则直接把它返回,在单例模式里只有一个缓存,而用缓存代理则需要使用一个对象记录使用过哪些参数实例化过对象。
好在Proxy里提供了construct捕获其,用来捕捉对函数的new操作符,具体可以看MDN
这个例子是在实例化对象时将指定计算次数的斐波那契数放入一个属性上,通过对比能明显看到运行的差距:
//! 计算斐波那契数const getFib = (number) => { if (number <= 2) { return 1; } else { return getFib(number - 1) + getFib(number - 2); }};//! 目标类class getNum { constructor(number) { this.number = getFib(number); }}//! 代理类c......原文转载:http://www.shaoqun.com/a/871481.html
跨境电商:https://www.ikjzd.com/
壹米滴答:https://www.ikjzd.com/w/2314
agora:https://www.ikjzd.com/w/2176
优1宝贝:https://www.ikjzd.com/w/1507
代理模式代理模式的定义:为一个对象提供一个代用品或占位符,以便控制对它的访问代理模式被运用到vue的响应式数据上,在ES6之前用Object.defineProperty,在ES6后使用Proxy来实现代理。虚拟代理虚拟代理用来收集某个时间内对代理对象的访问,在某个时间时把收集到的访问全部执行,某种意义上可以看作是带有收集功能的防抖。以点击事件为例:<span>2</span&g
美国旅游必吃的几款三明治推荐:http://www.30bags.com/a/421572.html
美国旅游攻略_夏威夷享受美丽天堂 :http://www.30bags.com/a/408679.html
美国旅游攻略阿拉斯加之秋 :http://www.30bags.com/a/408687.html
美国旅游攻略感受绝美风情 :http://www.30bags.com/a/408688.html
男人爱㖭女人下边 被㖭下面是什么感觉:http://lady.shaoqun.com/a/247485.html
喜欢让人㖭我下面啊 女人口述被亲下面的感觉:http://lady.shaoqun.com/m/a/247971.html
少妇口述:夫妻4P换妻真实经历:http://www.30bags.com/m/a/249628.html
我把媳妇介绍给上司认识 口述为升职我差点失去老婆经历:http://www.30bags.com/m/a/250709.html
深圳赵磊第一次音乐会什么时候:http://www.30bags.com/a/496665.html
深圳赵磊第一次音乐会开票了吗:http://www.30bags.com/a/496666.html
亚马逊运营QA集锦(1834-1843):https://www.ikjzd.com/articles/146576
女青年说老公不能满足自己,酒店和男网友约会,后来男网友崩溃了:http://lady.shaoqun.com/a/418091.html
没有评论:
发表评论