es6
web前端-前端问答
手机拍卖网站源码,用vs还是vscode,ubuntu 系统权限,tomcat改启动方式,sqlite3中查找数据,爬虫自动化浏览器推荐,php 安卓接口,深圳天企网络seo,静态网站有后台吗,手机影视模板免费下载lzw
es6代理模式是什么sencha touch 源码,vscode格式化空路径问题,ubuntu 代理翻墙,不能同时启动多个tomcat,sqlite 日期对比,南阳网页设计招聘,阿里云服务器如何登录,discuz付费插件破解,微前端框架app,微博情侣爬虫,php大师,天津seo技术培训,药业网站源码,简易信息录入管理网页模板,友盟网站模板,关于我们的 页面模板,Bui管理系统模板,简单数据库小程序lzw
代理模式(英语:Proxy Pattern)是程序设计中的一种设计模式。外卖人源码8.6,vscode左右显示代码,ubuntu关闭硬件,tomcat原理动作讲解,sqlite3自动递增列,适合爬虫用的笔记本鼠标,php post函数,外贸seo营销ppt广告,如何用服务器搭建杰奇小说网站,badmin模板lzw
所谓的代理者是指一个类别可以作为其它东西的接口。代理者可以作任何东西的接口:网络连接、内存中的大对象、文件或其它昂贵或无法复制的资源。而在JavaScript中代理模式的具体表现形式就是ES6中的新增对象—Proxy
Proxy 的解释是:
Proxy对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。
简单来说: Proxy 对象就是可以让你去对JavaScript中的一切合法对象的基本操作进行自定义.然后用你自定义的操作去覆盖其对象的基本操作.也就是当一个对象去执行一个基本操作时,其执行的过程和结果是你自定义的,而不是对象的.
:sweat:好吧,用文字表达可能太复杂了.我们还是直接上代码吧.
Proxy的语法是:
let p = new Proxy(target, handler);
target 是你要代理的对象.它可以是JavaScript中的任何合法对象.如: (数组, 对象, 函数等等)
handler 是你要自定义操作方法的一个集合.
p 是一个被代理后的新对象,它拥有 target 的一切属性和方法.只不过其行为和结果是在 handler 中自定义的.
然后让我们来看这段代码:
let obj = { a: 1, b: 2,} const p = new Proxy(obj, { get(target, key, value) { if (key === 'c') { return '我是自定义的一个结果'; } else { return target[key]; } }, set(target, key, value) { if (value === 4) { target[key] = '我是自定义的一个结果'; } else { target[key] = value; } }})console.log(obj.a) // 1console.log(obj.c) // undefinedconsole.log(p.a) // 1console.log(p.c) // 我是自定义的一个结果obj.name = '李白';console.log(obj.name); // 李白obj.age = 4;console.log(obj.age); // 4p.name = '李白';console.log(p.name); // 李白p.age = 4;console.log(p.age); // 我是自定义的一个结果
从上面这段代码中,我可以很清楚的看到 Proxy 对象的作用.即是之前所受的 用于定义基本操作的自定义行为 .同样的 get 和 set 操作.没有没代理的对象所得的结果是其JavaScript本身的执行机制运行计算后所得到的.而被代理了的对象的结果则是我们自定义的.
Proxy的兼容性如下: