title: Copying Javascript getters/setters to another prototype object
body: <pre><code>// Base class
  var Base = function() {
      this._value = 'base';
  };
  Base.prototype = {
      constructor: Base,
      // By function
      getValue: function() {
          return this._value;
      },
      // By getter
      get value() {
          return this._value;
      }
  };
  
  // Sub class extends Base
  var Sub = function() {
      this._value = 'sub';
  };
  Sub.prototype = {
      constructor: Sub
  };
  // Pass over methods
  Sub.prototype.getValue = Base.prototype.getValue;
  Sub.prototype.value = Base.prototype.value;
  
  // ---
  
  var mySub = new Sub();
  alert(mySub.getValue()); // Returns 'sub'
  alert(mySub.value);      // Returns 'undefined'
  </code></pre>
  
  <p>At first glance it seems that mySub.value should return the same as mySub.getValue(), but as you can see it instead returns undefined. Obviously the getter is not finding the parent scope as the Sub instance (mySub), but rather a non-existent Base instance.</p>
  
  <p>Is there any way around this other than having to assign the same getters onto the new prototype?</p>