Всем привет. 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))