proxy

Proxy:

  • 用法new Proxy(obj, handler)
  • Proxy 中接受的 Receiver 形参表示代理对象本身或者继承与代理对象的对象

Reflect:

  • Reflect.get(target, key, receiver)等价target[key].call(receiver)保证上下文this指向正确
  • Reflect 中传递的 Receiver 实参表示修改执行原始操作时的 this 指向。
proxy代理对象
var obj = {
    a: 1,
    b: 2
};
var proxy = new Proxy(obj, {
    get: function(target, key, receiver) {
        return Reflect.get(target, key, receiver);
    },
    set: function(target, key, value, receiver) {
        return Reflect.set(target, key, value, receiver);
    }
});
//打印出来 proxy对象
/*
{
  deleteProperty: ƒ deleteProperty(target, key),
  get: ƒ (target, key, receiver),
  has: ƒ has(target, key),
  ownKeys: ƒ ownKeys(target),
  set: ƒ (target, key, value, receiver),
  a: 1,
  b: 2,
  ...
}
*/
proxy代理数组
var arr = [1,2,3]
var proxy = new Proxy(arr, {    
    get: function (target, key, receiver) {
         return Reflect.get(target, key, receiver);
     },
     set(target, key, value, receiver){
         return Reflect.set(target, key, value, receiver);
     }
 })
//打印出来 proxy对象
/*
{
  0: 1,
  1: 2,
  2: 3,
  deleteProperty: ƒ deleteProperty(target, key),
  get: ƒ (target, key, receiver),
  has: ƒ has(target, key),
  ownKeys: ƒ ownKeys(target),
  set: ƒ (target, key, value, receiver),
  ...
}
*/
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.概述 Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提...
    黑云阅读 422评论 0 2
  • 监听对对象的操作 有一个对象,我们希望监听这个对象中的属性被设置或获取的过程 下面实现的弊端: 如果我们想监听对对...
    静昕妈妈芦培培阅读 373评论 0 0
  • 1.Proxy可以包装任何形式的对象:包括原生数组,函数,甚至另一个代理 2.代理实例中没有指定的handler,...
    联旺阅读 1,003评论 0 0
  • 前面的话   ES5和ES6致力于为开发者提供JS已有却不可调用的功能。例如在ES5出现以前,JS环境中的对象包含...
    CodeMT阅读 1,573评论 0 2
  • Proxy使用 Proxy是一个类,要new来实例化 target指要代理的对象 handler一个对象,对tar...
    泡沫的快乐阅读 779评论 1 0