Proxy experiments

by andrew rowe

HTML

<ul id='log'></ul>

JavaScript

function log() {
  const ul = document.getElementById('log');
  const li = document.createElement('li');

  li.innerText = Array.from(arguments).map(v => v.toString()).join(', ');
  ul.appendChild(li);
}
let target = {};
let proxy = new Proxy(target, {
  get(target, prop) {
    if (prop in target) {
      return target[prop]
    } else {
      return 0
    }
  },
  set(target, prop, val) { // to intercept property writing
    target[prop] = parseInt(val);
    if (isNaN(target[prop])) {
      target[prop] = 0
    }
    return false;
  }
}); // test handler

proxy.test = 5; // writing to proxy (1)
proxy.flong = '9';
proxy.oopsy = 'hello';
proxy.list = ['poo', 1, 2, 3]
log('default', proxy.default); // 5, we can read it from proxy too (2)
log('for in')
for (let key in proxy) log('key', key, 'value', proxy[key]); // test, iteration works (3)