Всем привет. JavaScript. Тема связана с наследованием. obj.prototype.constructor = obj

Код взят с сайта https://developer.mozilla.org

function Shape() {
  this.x = 0;
  this.y = 0;
}

// метод суперкласса
Shape.prototype.move = function (x, y) {
  this.x += x;
  this.y += y;
  console.info("Фигура переместилась.");
};

// Rectangle — подкласс
function Rectangle() {
  Shape.call(this); // вызываем конструктор суперкласса
}

// подкласс расширяет суперкласс
Rectangle.prototype = Object.create(Shape.prototype);
Rectangle.prototype.constructor = Rectangle;//**

var rect = new Rectangle();

Не совсем понимаю для чего нужна предпоследняя строка, если при создании нового объекта мы все так и так указываем Rectangle в качестве конструктора. Пораспечатывал все что мог в консоли, но не почувствовал разницы между вариантом с предпоследней строкой и без нее.


Ответы (1 шт):

Автор решения: niknils

prototype.constructor указывает на объявление class с внутренней переменной this, указывающей на то, что это - экземпляр this с точки зрения class (class=this), а потому, собственно, для создания экземпляра class/this нужно делать new (новый что? экземпляр чего? класса (сущности->this))

→ Ссылка