JavaScript – Proxy
参考
介绍和使用
Proxy 的作用是代理对象, 消费者不直接使用对象, 而是使用代理对象.
一般上做代理的目的就是想拦截对象访问做一些别的事情. 比如当对象改变以后, 同步 HTML.
基本用法:
interface Person {
name: string;
age?: number;
}
const person: Person = {
name: 'Derrick',
age: 11,
};
const proxy = new Proxy(person, {
get(target, prop: keyof typeof person, receiver) {
console.log(target === person); // true
console.log('prop', prop); // age
console.log('receiver', receiver === proxy); // true
return target[prop];
},
set(target, prop: keyof typeof person, value: typeof person[keyof typeof person], _receiver) {
(target as any)[prop] = value;
return true; // 在 'use strict' mode 中, 如果这里返回 false 则会报错
},
deleteProperty(target, p: keyof typeof person) {
delete target[p];
return true;
},
});
proxy.age = 15;
console.log(proxy.age);
delete proxy.age;
上面拦截了对象的 get set delete 访问. 当对象被 get set delete 时, Proxy 方法就会被触发.
可以获得真的对象, 被访问的属性, set 的值, 还有 Proxy 对象.
然后就可以做许多事情了.
注意 set, delete 必须返回 boolean. 如果返回 false 在 strict mode 下会报错.
TODO
上面有一些 TypeScript 的问题.
JavaScript – Proxy的更多相关文章
- [Javascript] Intercept property access with Javascript Proxy
A Javascript Proxy object is a very interesting es6 feature, that allows you to determine behaviors ...
- Javascript Proxy对象 简介
Javascript Proxy对象 简介 Javascript Proxy对象 改变你操作对象的方式 Proxies 是Javasript对象的中间件 ...或者说至少是那种很早的版本. ES6 中 ...
- JavaScript - proxy
Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等). 来看看常用的方法 handler.get() let o = { name: 'liwenchi', age: 1 ...
- ArcGIS For JavaScript API 默认参数
“esri.config”的是在1.3版中的的“esriConfig”的替代品.如果您使用的是1.2或更低的版本,您应该参阅默认API v1.2和更低的配置.对于版本1.3或更高版本,您可以使用“es ...
- ArcGIS api for javascript——以地理处理结果为条件查询地图
这里发生什么任务呢?当第一次单击地图,单击的坐标被发送到一个Geoprocessor任务.该任务访问服务器上的通过ArcGIS Server 地理处理服务提供的可用的GIS模型.本例中模型计算驱动时间 ...
- ArcGIS api for javascript——用缓存区查询地图
描述 本例展示了如何在另外一个任务里使用一个任务的结果.单击地图查看被单击的点的1公里范围内的缓存(如果需要可以修改这个默认的缓存距离).也可以看缓存区的这些点的人口普查街区信息.单击一个点查看更多的 ...
- 2018 – 2019 年前端 JavaScript 面试题
JavaScript 基础问题 1.使以下代码正常运行: JavaScript 代码: const a = [1, 2, 3, 4, 5]; // Implement this a.multiply( ...
- JavaScript 设计模式及代码实现——代理模式
代理模式 1 定义 为其他对象提供一种代理以控制对这个对象的访问 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 2 应用举例 2.1 缓 ...
- [Architect] ABP(现代ASP.NET样板开发框架) 翻译
所有翻译文档,将上传word文档至GitHub 本节目录: 简介 代码示例 支持的功能 GitHub 简介 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目) ...
- ABP框架系列之八:(Introduction-介绍)
Introduction We are creating different applications based on different needs. But implementing commo ...
随机推荐
- 全网最适合入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法-模拟串口传感器和主机
全网最适合入门的面向对象编程教程:11 类和对象的 Python 实现-子类调用父类方法-模拟串口传感器和主机 摘要: 本节课,我们主要讲解了在 Python 类的继承中子类如何进行初始化.调用父类的 ...
- 学习笔记--Java中的数据类型
Java中的数据类型 /** * Java中的数据类型: * 程序当中有很多的数据,每一个数据拥有与之相关的类型. * * * 1. 数据类型的作用: * 不同类型的数据占用的空间大小不同,数据类型的 ...
- java面试一日一题:1.6/7/8Java内存区域有什么不同吗
问题:请讲下在JDK6 JDK7 JDK8中java内存区域有什么不同吗 分析:该问题主要考察对JVM运行时区域的了解,首先要了解最基本的内存区域划分,然后再去掌握其中的变化,再延申一点,为什么要这样 ...
- ios的idp/iep证书的生成方法,无苹果电脑
在这个多端开发的年代,出现了很多优秀的开发框架,比如hbuilder和uniapp等等.我们可以使用这些框架来开发APP,假如我们要打包ios的app,则需要一个idp/iep证书. 那么这个证书是如 ...
- RHCA rh442 006 中断号 缓存命中率 内存概念 大页
IRQ均衡 硬中断 IRQ是中断号 2003 电脑 拨号 56K Modem USB 打印机 拨号成功,打印机会是乱码,他们会不兼容 因为终端号一样 (类似ip地址冲突) 在bios里面调整设备的中断 ...
- FusionAccess liteAD
回车回车 fusion access完成 进入access网页 https://IP:8443进入web网页 输入用户名:admin:密码:IaaS@PORTAL-CLOUD8! 输入完账号密码后改密 ...
- 【Windows】更改Win10字体和Cmd字体
教程参考: https://www.windowszj.com/news/20837.html Win + R 打开运行窗口 输入 regedit 打开注册表编辑窗口 位置地址: 计算机\HKEY_L ...
- 【SqlServer】02 SSMS工具基本使用入门
之前的安装中除了SqlServer,还有一个SSMS管理工具 数据库的访问依赖于工具 SSMS提供了两种登陆方式: 创建用户: 删除用户: 创建数据库: 删除数据库: 创建表: 设置表的字段,字段名称 ...
- 【ECharts】01 快速上手
简单介绍: ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求. ECharts 遵循 Apache-2.0 开源协议,免费商用. ECharts 兼容 ...
- NVIDIA人形机器人AI套件:NVIDIA Isaac Manipulator 和 NVIDIA Isaac Perceptor
IsaacManipulator 为机械臂提供了卓越的灵活性和模块化AI功能,并提供了一系列强大的基础模型和GPU加速库.它提供了高达80倍的路径规划加速,零样本感知提高了效率和吞吐量,使开发者能够实 ...