Как работает конструктор наследования? Наткнулся на пример наследования через конструктор. И никак не могу понять, для чего нужна данная строка Square.prototype.constructor = Square; По заверению автора, она просто необходима. Поясните пожалуйста, зачем здесь перезаписывается constructor прототипа Square? Код замечательно работает и без этого фрагмента.function Rectangle(length, width) { this.length = length; this.width = width; } Rectangle.prototype.getArea = function() { return this.length * this.width; }; Rectangle.prototype.toString = function() { return "[Rectangle " + this.length + "x" + this.width + "]"; }; // inherits from Rectangle v function Square(size) { this.length = size; this.width = size; } Square.prototype = new Rectangle(); Square.prototype.constructor = Square; Square.prototype.toString = function() { return "[Square " + this.length + "x" + this.width + "]"; }; var rect = new Rectangle(5, 10); var square = new Square(6);