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)