wordpress页面采集申泽seo
监听对象操作

在Object中,可以通过defineProperty中的get,set进行监听,

Proxy基本使用

有两个参数,第一个是要代理的对象,第二个是捕获器,在不知道捕获器使用哪个之前可以先传个空对象。就会启用默认的捕获器。
代理对象是可以获取到原对象的值,对值更改,原对象的值,也会更改,这就是启用了默认捕获器

Proxy的set和get捕获器

设置获取的捕获器,有三个参数,第一个是代理的对象,第二个是需要获取的key,设置值的捕获器也是有 四个参数,第一个是代理的对象,第二个是需要获取的key,带三个为设置的新value

判断某key是否存在该对象中,也可以使用代理对象,然后增加一个监听in的捕获器,即可监听了

对删除操作监听

Proxy所有捕获器
获取对象原型捕获器,设置对象原型捕获器,判断某个对象能否进行扩展捕获器

Proxy的constructor和apply

对函数的apply捕获器,三个参数,第一个是函数,第二个是this和第三个要处理数据

Reflect的作用

Reflect的常见方法

Reflect的使用

使用reflect的区别就是,Reflect返回的是一个布尔类型,可以判断操作是否成功

通过代理对象,来查看name值,来到对象中的set和get方法中,this的指向还是obj而不是objProxy,这就违背了代理对象的初心,所以我们需要更改方式。
因为当访问.name时,只来到代理对象的get捕获器一次。如果,this指向的是objProxy,那么访问到对象的get,里面的this._name,就相当于objProxy._name,按理来说就会再来一次get的捕获器中。

Receiver的作用

receiver其实就是代理对象,receiver会当做代理对象传入对象中的this。此时就解决了,get中this指向问题了



Reflect的construct


