4.0 KiB
4.0 KiB
id, title, challengeType, videoUrl, localeTitle
| id | title | challengeType | videoUrl | localeTitle |
|---|---|---|---|---|
| 587d7db1367417b2b2512b87 | Add Methods After Inheritance | 1 | Añadir métodos después de la herencia |
Description
prototype de una función constructora de supertype aún puede tener sus propios métodos además de los métodos heredados. Por ejemplo, Bird es un constructor que hereda su prototype de Animal : function animal () {}Además de lo que se hereda de
Animal.prototype.eat = function () {
console.log ("nom nom nom");
};
function Bird () {}
Bird.prototype = Object.create (Animal.prototype);
Bird.prototype.constructor = Bird;
Animal , desea agregar un comportamiento que sea exclusivo de los objetos Bird . Aquí, Bird obtendrá una función fly() . Las funciones se agregan al prototype Bird's la misma manera que cualquier función de constructor: Bird.prototype.fly = function () {Ahora las instancias de
console.log ("Estoy volando!");
};
Bird tendrán los métodos de eat() y fly() : dejar pato = nuevo pájaro ();
duck.eat (); // imprime "nom nom nom"
duck.fly (); // impresiones "Estoy volando!"
Instructions
Dog hereda de Animal y el constructor Dog's prototype Dog's esté configurado en Dog. Luego, agregue un método de bark() al objeto Dog para que el beagle pueda eat() y bark() . El método de la bark() debe imprimir "¡Guau!" a la consola. Tests
tests:
- text: <code>Animal</code> no debe responder al método de la <code>bark()</code> .
testString: 'assert(typeof Animal.prototype.bark == "undefined", "<code>Animal</code> should not respond to the <code>bark()</code> method.");'
- text: <code>Dog</code> debe heredar el método de <code>eat()</code> de <code>Animal</code> .
testString: 'assert(typeof Dog.prototype.eat == "function", "<code>Dog</code> should inherit the <code>eat()</code> method from <code>Animal</code>.");'
- text: <code>Dog</code> debe tener el método de la <code>bark()</code> como propiedad <code>own</code> .
testString: 'assert(Dog.prototype.hasOwnProperty("bark"), "<code>Dog</code> should have the <code>bark()</code> method as an <code>own</code> property.");'
- text: <code>beagle</code> debe ser un <code>instanceof</code> <code>Animal</code> .
testString: 'assert(beagle instanceof Animal, "<code>beagle</code> should be an <code>instanceof</code> <code>Animal</code>.");'
- text: El constructor para <code>beagle</code> debe establecer en <code>Dog</code> .
testString: 'assert(beagle.constructor === Dog, "The constructor for <code>beagle</code> should be set to <code>Dog</code>.");'
Challenge Seed
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
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();