title: Alternatives of JavaScript Proxy
body: <p>I want to use <code>Proxy</code> on a customized class called <code>ObservableList</code> which contains an <code>Array</code>. Since <code>Proxy</code> is available only after ES6, I wonder if there is any alternative implementation.</p>
  
  <p>My requirement is to get updated (rather than get noticed) for observers once <code>ObservableList</code> changes, so that the observers are always consist with observable with some filtering or mapping method.</p>
  
  <pre><code>var activities = new ObservableList(['reading', 'swimming']);
  var sAct = activities.filter(function(v) {
    return v[0] === 's';
  });
  // expect sAct.list to be ['swimming']
  var meAct = activities.map(function(v) {
    return 'I am ' + v;
  });
  // expect meAct.list to be ['I am reading', 'I am swimming']
  
  activities.list.push('smiling');
  console.log(sAct.list, meAct.list);
  // expect sAct.list to be ['swimming', 'smiling']
  // expect meAct.list to be ['I am reading', 'I am swimming', 'I am smiling']
  
  activities.list[1] = 'snoopying';
  console.log(sAct.list, meAct.list);
  // expect sAct.list to be ['swimming', 'snoopying']
  // expect meAct.list to be ['I am reading', 'I am snoopying', 'I am smiling']
  </code></pre>
  
  <p>My implementation with Proxy is available at <a href="https://jsfiddle.net/ovilia/tLmbptr0/3/" rel="noreferrer">https://jsfiddle.net/ovilia/tLmbptr0/3/</a></p>