--- id: 587d7db1367417b2b2512b86 title: Reset an Inherited Constructor Property challengeType: 1 forumTopicId: 301324 localeTitle: Сбросить свойство унаследованного конструктора --- ## Description
Когда объект наследует свой prototype от другого объекта, он также наследует свойство конструктора supertype . Вот пример:
function Bird () {}
Bird.prototype = Object.create (Animal.prototype);
let duck = new Bird ();
duck.constructor // function Animal () {...}
Но duck и все случаи Bird должны показать, что они были построены Bird а не Animal . Для этого, вы можете вручную установить Bird's свойство конструктора для Bird объекта:
Bird.prototype.constructor = Bird;
duck.constructor // function Bird () {...}
## Instructions
Fix the code so duck.constructor and beagle.constructor return their respective constructors.
## Tests
```yml tests: - text: Bird.prototype should be an instance of Animal. testString: assert(Animal.prototype.isPrototypeOf(Bird.prototype)); - text: duck.constructor should return Bird. testString: assert(duck.constructor === Bird); - text: Dog.prototype should be an instance of Animal. testString: assert(Animal.prototype.isPrototypeOf(Dog.prototype)); - text: beagle.constructor should return Dog. testString: assert(beagle.constructor === Dog); ```
## Challenge Seed
```js function Animal() { } function Bird() { } function Dog() { } Bird.prototype = Object.create(Animal.prototype); Dog.prototype = Object.create(Animal.prototype); // Add your code below this line let duck = new Bird(); let beagle = new Dog(); ```
## Solution
```js function Animal() { } function Bird() { } function Dog() { } Bird.prototype = Object.create(Animal.prototype); Dog.prototype = Object.create(Animal.prototype); Dog.prototype.constructor = Dog; Bird.prototype.constructor = Bird; let duck = new Bird(); let beagle = new Dog(); ```