2016-11-10 8 views
0

私のクラスに少し問題があります。それは非常に簡単な何かになるはずですが、私は解決策を見つけることができません。クラスCuboidは正常に動作しますが、クラスCubeはちょうどokeyではありません。私はsuperメソッドを間違った方法で使用したと思います。JS:EcmaScript6拡張クラスに異なる数のパラメータを渡す方法

ちょっとしたヒントを教えてください。前もって感謝します。

class Cuboid { 
 
    constructor(length, width, height) { 
 
    this.length = length; 
 
    this.width = width; 
 
    this.height = height; 
 
    } 
 
    get surfaceArea() { 
 
    return (this.length * this.width + this.length * this.height + this.height * this.width) * 2; 
 
    } 
 
    get volume() { 
 
    return this.length * this.width * this.height; 
 
    } 
 
} 
 
class Cube extends Cuboid { 
 
    constructor(length) { 
 
    super(length); 
 
    this.height = length; 
 
    } 
 
}

みんな、なぜあなたは私の質問をd​​ownvoteていますか?それは本当にいいとは言えません...

+1

スーパークラスのコンストラクタは、引数の長さ、幅、高さ、長さだけでなくを取りますので、それを行うには2つのオプションがあります。 – Li357

+1

「オッケーじゃない?」とはどういう意味ですか? –

+0

おそらく3つの正しいパラメータを 'super()'に渡し、 'this.height = length;'部分を削除したいでしょう。 –

答えて

3

私が提案しているように、キューブは3次元すべてが等しいキューボイドです。

1.

class Cube extends Cuboid { 
    constructor(length) { 
    super(length, length, length); 
    } 
} 

2.

class Cuboid { 
    constructor(length, width, height) { 
    this.length = length || 0; 
    this.width = width || this.length; 
    this.height = height || this.width; 
    } 
    // .... 
+0

ところで、あなたが私の質問をアップヴォートするなら、私は感謝するだろう、coz stackoverflowは、3x downvoteのためにさらなる質問をする私の能力をブロックした。 – Patrickkx

+0

他のユーザーにとって便利な方法で質問を編集してください。同様の:拡張クラスに異なる数のパラメータを渡す方法。 – Nosyara

+1

第2のものはかなり恐ろしい考えです。あなたが '0'を渡すとうまくいかない。パラメータのデフォルト値を使用する場合は、コンストラクタ(length、width = length、height = length){...} ' – Bergi

関連する問題