--- id: 587d7db1367417b2b2512b86 title: Reset an Inherited Constructor Property challengeType: 1 forumTopicId: 301324 --- ## Description
When an object inherits its prototype from another object, it also inherits the supertype's constructor property. Here's an example: ```js function Bird() { } Bird.prototype = Object.create(Animal.prototype); let duck = new Bird(); duck.constructor // function Animal(){...} ``` But duck and all instances of Bird should show that they were constructed by Bird and not Animal. To do so, you can manually set Bird's constructor property to the Bird object: ```js 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(); ```