title: The set and get methods of a property on the prototype aren't shadowed from the corresponding property on the instance which has no set-get methods
body: <p>I have the following code from <a href="https://hacks.mozilla.org/2015/07/es6-in-depth-classes/" rel="nofollow noreferrer">Eric Faust ES6 class syntax sugar</a>:</p>
  
  <pre><code>function Circle(radius) {
        this.radius = radius;
        Circle.circlesMade++;
    }
  
    Circle.draw = function draw(circle, canvas) { /* Canvas drawing code */ }
  
    Object.defineProperty(Circle, "circlesMade", {
        get: function() {
            return !this._count ? 0 : this._count;
        },
  
        set: function(val) {
            this._count = val;
        }
    });
  
    Circle.prototype = {
        area: function area() {
            return Math.pow(this.radius, 2) * Math.PI;
        }
    };
  
    Object.defineProperty(Circle.prototype, "radius", {
        get: function() {
            return this._radius;
        },
  
        set: function(radius) {
            if (!Number.isInteger(radius))
                throw new Error("Circle radius must be an integer.");
            this._radius = radius;
        }
    });
  
    let x = new Circle("pippo");
  </code></pre>
  
  <p>And I can't understand why is launched the exception. The setter and getter methods are associated with the prototype <code>Circle.prototype</code> on the <code>radius</code> accessor property instead when I create the <code>x</code> instance I set the radius property too but in the constructor function thus I expected that setter and getter weren't triggered (again because <code>radius</code> property on the instance and <code>radius</code> property on the prototype are defined on two different objects) . I miss something about how setter and getter work in this case. Someone can clarify me?</p>
  
  <p>Furthemore another little unrelated question, is it right define the <em>static</em> property <code>circlesMade</code> on the constructor <code>Circle</code> or was it more correct to define it on the prototype?</p>