Proxy & Reflect

Introduction

  • The Proxy object enables you to create a proxy for another object, which can intercept and redefine fundamental operations for that object.

let numbers = [];

numbers = new Proxy(numbers, { 
   get(target, prop) {
    if (prop in target) {
      return target[prop];
    } else {
      return 0; // return default value
    }
  },
  set(target, prop, val) { // intercept the insertion behavior
    if (typeof val == 'number') {
      target[prop] = val;
    }
    return true;
  }
});

numbers.push(1); 
numbers.push(2); 
numbers.push("test"); 
console.log(numbers[2], numbers[1], numbers[123]); // 0 2 0

Reflect

  • It is used to simplify the creation of proxy

let numbers = [];

numbers = new Proxy(numbers, { 
   get(target, prop) {
    if (prop in target) {
      return Reflect.get(...arguments);
    } else {
      return 0; // return default value
    }
  },
  set(target, prop, val) { // intercept the insertion behavior
    if (typeof val == 'number') {
      return Reflect.set(...arguments);
    }
    return true;
  }
});

numbers.push(1); 
numbers.push(2); 
numbers.push("test"); 
console.log(numbers[2], numbers[1], numbers[123]);

Last updated

Was this helpful?