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);
}