当前位置: 首页 > news >正文

ES6中Proxy和Proxy实例

1.Proxy
Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器
使用方法

let p = new Proxy(target, handler);

其中,target 为被代理对象。handler 是一个对象,其声明了代理 target 的一些操作。p 是代理后的对象。

当外界每次对 p 进行操作时,就会执行 handler 对象上的一些方法。

let target = {name: 'obj'};letlogHandler = {get: function(target, key) {console.log(`${key} 被读取`);return target[key];},set: function(target, key, value) {console.log(`${key} 被设置为 ${value}`);target[key] = value;}}lettargetWithLog = new Proxy(target, logHandler);targetWithLog.name; // 控制台输出:name 被读取targetWithLog.name = 'others'; // 控制台输出:name 被设置为 others
console.log(target.name); // 控制台输出: others

2.proxy实例

重点说一下其construct方法

—构造函数拦截 – construct()

construct方法用于拦截proxy实例new命令,下面是拦截对象的写法。

var handler = {construct (target, args, newTarget) {return new target(...args);}
};

其中construct方法可以接受三个参数。

target:目标对象
args:构造函数的参数对象
construct方法返回的必须是一个对象,否则会报错。
newTarget:创造实例对象时,new命令作用的构造函数

var p = new Proxy(function() {}, {construct: function(target, argumentsList) {return 1;}
});new p() // 报错
// Uncaught TypeError: 'construct' on proxy: trap returned non-object ('1')
var p = new Proxy(function() {}, {construct: function(target, args) {conosole.log('called:'+ args.join(','));return { value:args[0]*10);}
});(new p(1)).value  // new p的时候会执行construct方法
// 'called:1'
// 10
http://www.lryc.cn/news/147102.html

相关文章:

  • UDP协议的重要知识点
  • QT6为工程添加资源文件,并在ui界面引用
  • Python小知识 - 如何使用Python的Flask框架快速开发Web应用
  • Flutter 项目结构文件
  • 未找到System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid) 方法错误
  • 人员位置管理,点亮矿山安全之路
  • node-red - 读写操作redis
  • 【图像处理】模板匹配的学习笔记
  • Ext JS之Ext Direct快速入门
  • 内网隧道技术学习
  • 【前端】CSS3新特性
  • Spring之HandlerInterceptor和RequestBodyAdvice
  • transition、transform 区别和应用
  • Android中级——消息机制
  • 【kubernetes】使用KubeSphere devops部署我的微服务系统
  • 【哈士奇赠书活动 - 37期】- 〖深入浅出SSD:固态存储核心技术、原理与实战 第2版〗
  • 25.CSS自定义形状按钮与悬停效果
  • 两条速度相差1350倍的sql语句
  • 【UniApp开发小程序】小程序首页完善(滑到底部数据翻页、回到顶端、基于回溯算法的两列数据高宽比平衡)【后端基于若依管理系统开发】
  • 使用errors.Wrapf()代替log.Error()
  • 企业面临的IP风险,如何应对?
  • L1-046 整除光棍(Python实现) 测试点全过
  • 《Web安全基础》04. 文件上传漏洞
  • 文本匹配实战系列
  • 【Kafka】Kafka Stream简单使用
  • 在Linux服务器上,查看系统最近的重启记录
  • Vue2023 面试归纳及复习
  • Android动态可编辑长度列表
  • 合并对象在 Typescript 中的实现与应用
  • antd upload组件beforeUpload返回promise之后,获取的文件不是file类型导致上传失败