4

継承オブジェクトからスーパーコンストラクターを呼び出すにはどうすればよいですか?たとえば、私は単純な動物の「クラス」を持っています:

function Animal(legs) {
  this.legs = legs;
}

Animalを継承するが、レッグの数を乱数に設定する「Chimera」クラスを作成したい(コンストラクターでレッグの最大数を提供します。これまでのところ、これがあります。

function Chimera(maxLegs) {
    // generate [randLegs] maxed to maxLegs
    // call Animal's constructor with [randLegs]
}
Chimera.prototype = new Animal;
Chimera.prototype.constructor = Chimera;

動物のコンストラクターを呼び出す方法は?ありがとう

4

3 に答える 3

4

私はあなたが望むものはコンストラクターチェーンに似ていると思います:

function Chimera(maxLegs) {
    // generate [randLegs] maxed to maxLegs
    // call Animal's constructor with [randLegs]
    Animal.call(this, randLegs);
}

または、寄生虫の継承を検討することもできます

function Chimera(maxLegs) {

    // generate [randLegs] maxed to maxLegs
    // ...

    // call Animal's constructor with [randLegs]
    var that = new Animal(randLegs);

    // add new properties and methods to that
    // ...

    return that;
}
于 2010-10-11T21:00:37.327 に答える
2

callすべての関数にあるメソッドを使用できます。

function Chimera(maxLegs) {
   var randLegs = ...;
   Animal.call(this, randLegs);
}
于 2010-10-11T20:55:32.607 に答える
-2

あなたはこれを行うことができるはずです:

new Animal();
于 2010-10-11T20:53:14.337 に答える