On dirait que vous voulez que le constructeur parent soit appelé automatiquement, ce qui n'est pas supporté sans travail supplémentaire. Votre code doit ressembler à ce qui suit
function Alive(name) {
this.name = name;
}
function Cat(name) {
// Call the parent constructor
Alive.call(this, name);
}
Cat.prototype = new Alive();
// This line is to fix the constructor which was
// erroneously set to Alive in the line above
Cat.prototype.constructor = Cat;
var cat = new Cat('Thomas');
alert(cat.name);
Si vous utilisez une bibliothèque pour mettre en œuvre l'héritage, vous ne devez pas vous inquiéter à ce sujet. Ils peuvent même appeler votre constructeur parent automatiquement si vous ne voulez pas créer un constructeur vide. Le code ci-dessus n'est toujours pas idéal. Voir un article que j'ai écrit qui parle de la «bonne» façon de faire de l'héritage. http://js-bits.blogspot.com/2010/08/javascript-inheritance-done-right.html
Cet exemple ne configure pas la chaîne du prototype, donc ce n'est pas l'héritage. –
Comme mentionné dans les commentaires du code, il n'y a aucune raison de le configurer car il n'y a rien à hériter. Si quelque chose était défini sur le prototype, ce serait différent. – Jeremy
La configuration de la chaîne du prototype est toujours nécessaire, sinon 'cat instanceof Alive' retournera false –