Proxy

是什么

proxy对象创建一个对象的代理,实现对象的的拦截和定义

 

怎么用

const p = new Proxy(【object】,【handler】)

object:是指被代理的对象

handler:是一个容纳一批特定属性的占位符对象。它包含有 Proxy 的各个捕获器(trap)。

const handler = {
    get: function(obj, prop) {
        return prop in obj ? obj[prop] : 37;
    }
};

const p = new Proxy({}, handler);
p.a = 1;
p.b = undefined;

console.log(p.a, p.b);      // 1, undefined
console.log('c' in p, p.c); // false, 37

 

 

Proxy 相比于 defineProperty 的优势

 defineProperty

没办法监听数组的变化

必须遍历对象的每个属性

必须遍历深层嵌套的对象

 

Proxy

针对对象,不需要遍历

支持数组

拥有更多拦截方式(object上的许多方法都可以拦截,拦截获取prototype的函数object.getPrototypeOf(),判断属性Object.getOwnPropertyDescriptor())

 

posted @ 2021-09-02 14:58  来吃点代码  阅读(232)  评论(0编辑  收藏  举报