Intercept array size changes
by IceCreamYou
JavaScript
var target = [],
p = new Proxy(target, {
set: function(target, property, value, receiver) {
target[property] = value;
if (property === 'length') {
log(`${property} = ${value}`);
}
return true;
}
});
p.push(1, 2, 3);
log(p);
p.push(4);
log(p);
p.splice(1, 1);
log(p);
p.length = 0;
log(p);
function log(s) {
var logElem = document.createElement('p');
logElem.textContent = typeof s === 'string' ? s : JSON.stringify(s);
document.body.appendChild(logElem);
}