--- id: 587d7db1367417b2b2512b87 title: Add Methods After Inheritance challengeType: 1 --- ## Description
A constructor function that inherits its prototype object from a supertype constructor function can still have its own methods in addition to inherited methods. For example, Bird is a constructor that inherits its prototype from Animal:
function Animal() { }
Animal.prototype.eat = function() {
  console.log("nom nom nom");
};
function Bird() { }
Bird.prototype = Object.create(Animal.prototype);
Bird.prototype.constructor = Bird;
In addition to what is inherited from Animal, you want to add behavior that is unique to Bird objects. Here, Bird will get a fly() function. Functions are added to Bird's prototype the same way as any constructor function:
Bird.prototype.fly = function() {
  console.log("I'm flying!");
};
Now instances of Bird will have both eat() and fly() methods:
let duck = new Bird();
duck.eat(); // prints "nom nom nom"
duck.fly(); // prints "I'm flying!"
## Instructions
Add all necessary code so the Dog object inherits from Animal and the Dog's prototype constructor is set to Dog. Then add a bark() method to the Dog object so that beagle can both eat() and bark(). The bark() method should print "Woof!" to the console.
## Tests
```yml tests: - text: Animal should not respond to the bark() method. testString: assert(typeof Animal.prototype.bark == "undefined", 'Animal should not respond to the bark() method.'); - text: Dog should inherit the eat() method from Animal. testString: assert(typeof Dog.prototype.eat == "function", 'Dog should inherit the eat() method from Animal.'); - text: Dog should have the bark() method as an own property. testString: assert(Dog.prototype.hasOwnProperty('bark'), 'Dog should have the bark() method as an own property.'); - text: beagle should be an instanceof Animal. testString: assert(beagle instanceof Animal, 'beagle should be an instanceof Animal.'); - text: The constructor for beagle should be set to Dog. testString: assert(beagle.constructor === Dog, 'The constructor for beagle should be set to Dog.'); ```
## Challenge Seed
```js function Animal() { } Animal.prototype.eat = function() { console.log("nom nom nom"); }; function Dog() { } // Add your code below this line // Add your code above this line let beagle = new Dog(); beagle.eat(); // Should print "nom nom nom" beagle.bark(); // Should print "Woof!" ```
## Solution
```js function Animal() { } Animal.prototype.eat = function() { console.log("nom nom nom"); }; function Dog() { } Dog.prototype = Object.create(Animal.prototype); Dog.prototype.constructor = Dog; Dog.prototype.bark = function () { console.log('Woof!'); }; let beagle = new Dog(); beagle.eat(); beagle.bark(); ```