親から継承するプロパティを取得しようとしていますが、正しい方法は不明です。JSのプロトタイプ継承と親プロパティを取得する方法
は私が持っているとしましょう:
var Animal = function(name){
this.offspring = [];
this.name = name;
return this;
}
Animal.prototype.createOffspring = function(name){
name = name || 'Baby '+(this.offspring.length+1);
this.offspring.push(name);
return this;
}
今、私はそう、私は手動で親からすべてを追加する必要はありませんサブプロトタイプの継承を追加したいです。例えば、私はそれを手動で猫にname
とcreateOffspring
を追加することなくAnimal
var pet = new Cat('Kitty');
pet.createOffspring();
であるかのように私は、これを行うにはしたいと思いAnimal
からベースCat
を追加したいと言うことができますconstructor
実際にはAnimal
ですが、他の機能が追加されています(.meow()
など)。
私はそれをテストする必要がありますが、_all_ animalsには名前があるので、 'this.name = 'A cat';'を削除できなければならないので、 'this.name'をやり直す必要はありません'cat.name'は' Animal'を返します。 –
ああ、すみません。私は間違った答えにあなたを誤解します:Animal.prototypeは設定されていないので、 'cat.name'は例外を与えます。インスタンスが動力学的に構築されるとき、正しい方法は、オブジェクトにプロトタイプを割り当てることです: 'Cat.prototype = Object.create(new Animal())' –
これは正しい方向に私を得てくれてありがとう。申し訳ありませんが、それほど時間がかかりました:) 奇妙なことは、 'Cat.prototype.constructor = Cat;'がコード内にあるかどうかが同じで、 'instanceof' s。また 'Object.create()'行は 'cat.name'を未定義にします。 http://jsbin.com/uhogig/edit#javascript,html –