Proxy test

by Emily Humphrey

JavaScript

const handler = {
  get(target, prop, receiver) {
    if (prop === 'items') {
      // Proxy the items array
      return new Proxy(target[prop], {
        get(arrTarget, arrProp, arrReceiver) {
          return Reflect.get(arrTarget, arrProp, arrReceiver);
        },
        set(arrTarget, arrProp, value, arrReceiver) {
          console.log(`Setting value ${value} at index ${arrProp}`);
          return Reflect.set(arrTarget, arrProp, value, arrReceiver);
        }
      });
    }
    return Reflect.get(target, prop, receiver);
  }
};

const proxy = new Proxy({ items: [] }, handler);

// Now, operations on proxy.items are intercepted by the proxy.
proxy.items.push({ name: "test" });
proxy.items.push({ name: "test 1" });
proxy.items.push({ name: "test 2" });
proxy.items.push({ name: "test 3" });

console.log(proxy.items)
console.log(proxy.items[0])