Proxy-Reflect

84 阅读1分钟

Proxy

在以前对对象进行操作时候用Object.defineProperty,进行get set 操作,但是设计的初衷不是为了监听截止一个对象中的所有属性的。

而且想监听更丰富的操作,是无能为力的。

在ES6中,新增了一个Proxy 类 ,顾名思义,创建一个对象代理。

const p=new Proxy(tartget,handler(捕获器))

image.png

Set函数中有四个参数 target,property,value,receiver,目标对象,将被设置的属性key,新属性值,调用的代理对象

Set函数中有四个参数 target,property,receiver

image.png

Reflect

反射

主要目的就是为了代替Object操作对象的方法。ECMA规范早期设计没考虑到如何设计更加规范,就将这些API都放到了Object中,但是Object本身作为一个构造函数,放到它身上并不合适。

所以ES6中新增了Reflect 对象 。

image.png

image.png

提出一个无理的要求

Student,Teacher两个函数

创建一个实例 让它student的方法,但是用Teacher的原型对象

Reflect的construct

image.png