Это не обязательно.Чемпионы ООП стараются превратить прототипическое наследование JavaScript в классическое наследование - это лишь одна из многих традиционных вещей.Единственное, что делает следующее
Student.prototype.constructor = Student;
, - это то, что теперь у вас есть ссылка на текущий «конструктор».
В ответе Уэйна, который был помечен как правильный, вы могли быто же самое, что следующий код делает
Person.prototype.copy = function() {
// return new Person(this.name); // just as bad
return new this.constructor(this.name);
};
с кодом ниже (просто замените this.constructor на Person)
Person.prototype.copy = function() {
// return new Person(this.name); // just as bad
return new Person(this.name);
};
Слава Богу, что с ES6 классические наследники могут использовать пуристыНативные операторы языка, такие как class, extends и super, и мы не должны видеть, как, например, исправления prototype.constructor и родительские ссылки.