ES6的Proxy API

ES6的Proxy API提供了一种方法来定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。当您创建一个对象时,您可以使用Proxy构造函数来拦截操作。

以下是一些使用Proxy API的示例:

javascript
let target = {  
  prop: 'value'  
};  
  
let handler = {  
  get: function(target, prop, receiver) {  
    console.log(`Get '${prop}'`);  
    return Reflect.get(...arguments);  
  },  
  set: function(target, prop, value, receiver) {  
    console.log(`Set '${prop} = ${value}'`);  
    return Reflect.set(...arguments);  
  }  
};  
  
let proxy = new Proxy(target, handler);  
  
proxy.prop; // "Get 'prop'" (from handler)  
proxy.prop = 'new value'; // "Set 'prop = new value'" (from handler)

在上面的例子中,我们定义了一个handler对象,它有两个trap方法:get和set。这些方法分别拦截了对属性的读取和设置操作。在每个trap方法中,我们打印了一条消息,并使用Reflect对象来执行原始操作。然后,我们使用这个handler对象和一个目标对象来创建一个新的Proxy对象。现在,当我们访问或修改proxy对象的属性时,我们的handler对象就会被调用。

注意:handler对象中的get和set方法接收三个参数:目标对象,被访问的属性名和一个接收对象。在我们的handler对象中,我们使用这些参数来打印出被访问的属性名和接收到的值。然后,我们调用Reflect对象的get和set方法来执行原始操作。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、监听对象的操作 我们先来看一个需求:有一个对象,我们希望监听这个对象的属性被设置或获取的过程 通过我们前面所学...
    咸鱼不咸_123阅读 2,860评论 0 2
  • 摘要: Proxy的骚操作。 作者:前端小智 原文:Proxy 的巧用 Fundebug经授权转载,版权归原作者所...
    Fundebug阅读 14,757评论 1 20
  • 前不久换工作的时候面试某大厂被问到关于Proxy的问题,脑子里有点印象但是又说不出具体使用方法,主要还是自己平时积...
    HalShaw阅读 11,887评论 2 2
  • 此文出处 简介 proxyproxy可以拦截目标(target)上的非内置的对象进行操作,使用trap拦截这些操作...
    xiaohesong阅读 2,958评论 0 1
  • 什么是Proxy代理 ES6 让开发者能进一步接近 JS 引擎的能力,这些能力原先只存在于内置对象上。语言通过代理...
    27亿光年中的小小尘埃阅读 3,483评论 0 1