什么是 Proxy ?
一、写在前面
Proxy
的意思是代理,我们可以把它理解为一个拦截器,就是当我们操作对象时,它都会对对象的操作进行拦截,从而进行监测和改写。
为什么要存在Proxy?
因为在ES6
之前,我们使用Object.defineProperty()
来设置监听器,来监听对象属性的获取和改写。但是如果其中存在其他的一些操作,我们是无法监测到的,所以为了解决这样一个问题,在ES6
中增加了Proxy
代理。Proxy
可以帮助我们监听对象的十三中操作。
二、两者对比
Object.defineProperty
let info = {name: 'dmc',age: 20
}Object.defineProperty(info, 'name', {get() {console.log('获取info的name值')return 'dl'},set() {console.log('设置info的name值')}
})console.log(info.name)
info.name = 'dmc'
Proxy
let info = {name: 'dmc',age: 20
}let infoProxy = new Proxy(info, {get(target, key) {console.log('获取对象属性')return target[key]},set(target, key, newValue) {console.log('设置对象属性')target[key] = newValue},has(target, key) {console.log('触发has捕获器')}
})
三、Proxy其他捕获器类型
Proxy存在13种捕获器类型,常用的有has(), get(), set(), deleteProperty(),construt()和apply()主要用于函数
什么是 Proxy ?相关推荐
- ES6 Proxy 性能之我见
ES6 Proxy 性能之我见 本文翻译自https://thecodebarbarian.com/thoughts-on-es6-proxies-performance Proxy是ES6的一个强力 ...
- ATS统计量proxy.node.client_throughput_out的单位调研
proxy.node.client_throughput_out表示客户端字节吞吐量,那单位是什么呢? 我通过在SourceInsight中搜索ATS 5.3.1的源码,在traffic_shell. ...
- 设计模式之代理模式(Proxy Pattern)
定义:为其他对象提供一种代理以控制这个对象的访问,也叫做委托模式. 咱们比作游戏,通俗讲代理模式就是,一个主题虚基类派生出两个子类,一个玩家类,实现相关操作,一个是代练类,代替执行玩家相关操作,代练类 ...
- MySQL 水平分区方案Spock Proxy
Spock Proxy 是由实际项目产生的一个开源项目(Spock是Rails的应用,Speck Proxy应当可用于Rails之外的,例如PHP或.NET),基于MySQL Proxy开发,是MyS ...
- 使用MySQL Proxy解决MySQL主从同步延迟
MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方 面开发带来了极大的便利.但这种方式有个比较大的缺陷在于MySQL的同步机制是依赖Slave主动向Master发请求来获取数据的, ...
- mysql读写分离(MySQL Proxy 安装和使用)
一.必备软件: 1.LUA 可以去LUA的官方下载:www.lua.org 2.MySQL Proxy 这里有好多二进制版本. http://mysql.cdpa.nsysu.ed ...
- Proxy与NAT有什么区别
在internet共享上网技术上,一般有两种方式,一种是proxy代理型,一种是NAT网关型,关于两者的区别与原理,身边很多人都不是很明白,下面我来讲讲我的理解,如有不对的,欢迎指正. 1.先说应用例 ...
- 设计模式之代理模式(Proxy)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- devServer proxy跨域 设置代理 proxy
概念 什么是同源策略 同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一 ...
- 用es6 (proxy 和 reflect)轻松实现 观察者模式
js中 观察者 之前我们一般通过事件机制完成 ex: 注册监听 Event.listen('changeName', name => console.log(name)) 派发事件 Event. ...
最新文章
- 【卷积神经网络结构专题】一文详解AlexNet(附代码实现)
- 彻底解决Spring mvc中时间的转换和序列化等问题
- Quartus II11.0安装教程
- 名为 cursor_jinserted 的游标不存在_性能优化技巧 - 程序游标
- 规格选择_止水螺杆规格及选择
- The “note“ model is Samsung’s first
- 通过pip下载python包缓慢的解决方法
- win10传真服务器位置,win10系统电脑发传真的操作方法
- 怎么退出自适应巡航_定速巡航与自适应定速巡航到底有什么不同?
- Java工程师培训课(十七【新的领域】)
- 计算机学院认知实习报告
- 浅谈建筑能耗在线监测系统在天目西路街道103坊27丘项目泰禾大厦的应用—安科瑞 孙斌
- 站住!你会修改NPM全局模式的默认安装路径嘛?
- 使用计算机生成景物图像,使用计算机生成假想景物的图像,其主要步骤是______。...
- UCOSII软件定时器
- 微信小程序--》小程序简介与工具安装配置
- 无线网络原理知识总结
- 华为P30pro手机电路图
- 《Java程序设计》第15周课堂实践总结
- ‘conda‘不是内部或外部命令,也不是可运行的程序或批处理文件。