title: Is using Javascript setters and getter properties to watch for changes a bad idea?
body: <p>Using Object.create one can define setter and getter methods in Javascript.</p>
  <pre><code>o = Object.create(Object.prototype, {
  
    fooBar: {
      get: function() { return &quot;Meh&quot; },
      set: function(value) { console.log(value) }
    }
  });
  </code></pre>
  <p><code>console.log(o)</code> will always return Meh, and doing <code>o = &quot;Heyo&quot;</code> would only output the new value directly without changing <code>o</code>.</p>
  <p>Is there any reason as to why I should not use, or rely on this behavior to trigger events?
  What about two-way binding frameworks like angular and ember, do they make use of this feature?
  What about unit-testing?</p>
  <p>What is the defacto standard way of watching for changes to trigger events, without using explicit setters and getters?</p>