Tome un vistazo al código siguiente:Herencia JavaScript: ¿Cuándo están mis miembros derivados?
function Primate() {
this.prototype = Object;
this.prototype.hairy = true;
}
function Human() {
this.prototype = Primate;
}
new Human();
Al inspeccionar new Human()
, no hay hairy
miembro. Yo esperaría que haya uno. ¿Hay alguna otra forma que deba heredar de Primate
? Algo relacionado con Object.create()
(ECMAScript5 está bien para usar en mi escenario)?
Debe leer esta herencia de entender en JS: http://javascript.crockford.com/inheritance.html y http://javascript.crockford.com/prototypal.html – bfavaretto
Lo estás haciendo mal. Desea manipular los objetos 'prototype' de los constructores:' Primado' y 'Humano'. La instancia recién creada (el valor 'this' dentro del constructor) es * no * una función y, por lo tanto, agregar una propiedad' prototype' no tiene sentido. –
Crearía y extendería objetos (con Object.create) en lugar de parchear mono en la cadena del prototipo. El uso de funciones como constructores puede generar confusión porque esto es implementar objetos de JavaScript como estructuras de clase. – rxgx