Примечание: я полагаю, что этот сброс больше не нужен, если используется № 2 из следующих параметров:
Я полагаю, что вы можете использовать эти опции для наследования:
* 1. сделать через Object.create (в настоящее время я вижу этот синтаксис чаще):
Cat.prototype = Object.create(Mammal.prototype);//before this line of code has ran (where you can assume the Cat function is defined), the Cat.prototype was empty with a .prototype that correctly pointed to Cat... now it got overridden with Mammal's prototype inherited here which points to Mammal's constructor... need to reset on next line
Cat.prototype.constructor = Cat; //Since when prototype copied its constructor needs to get re-set/changed to the child constructor
* 2. через setPrototypeOf
Object.setPrototypeOf(Cat.prototype, Mammal.prototype);
//don't need to reset Cat.prototype.constructor in this case; 'seems smarter'
* 3. через новый; Не думаю, что этот способ рекомендуется больше (хотя именно так я и научился устанавливать наследование много лет назад).
Я полагаю, что читать настройку прототипа таким способом с помощью 'new ParentClass ()' больше не рекомендуется, так как он будет копировать свойства, которые не нужны в прототипе, я считаю (свойства, которые вы обычно устанавливаете в экземпляре с супер ( constructorParams) или ParentClass.call (this, constructorParams) в конструкторе / функции Cat, поэтому они должны быть общими для всех экземпляров через прототип).
Cat.prototype = new Mammal();
Cat.prototype.constructor=Cat;