2017-12-16 8 views
-1

クラスの機能の仕組みを理解するのが難しいです。ES2015の新しいクラスの機能を理解できません

次のスニペット をシンプルな日常的な単語でスーパーシンプルにすることはできますか?

私は本当にすべてを把握することが難しいと思っています。

その超機能も非常に奇妙に見えます。

ありがとうございます。

class Dessert { 
    constructor(calories = 250) { 
    this.calories = calories; 
    } 
} 

class IceCream extends Dessert { 
    constructor(flavor, calories, toppings = []) { 
    super(calories); 
    this.flavor = flavor; 
    this.toppings = toppings; 
    } 
    addTopping(topping) { 
    this.toppings.push(topping); 
    } 
} 
+0

ES5でコンストラクタ、プロトタイプ、および継承がどのように機能していたかを理解しましたか? – Bergi

+1

「全部」とは何か、あるいは「スーパー」についてだけ質問していますか? [いくつかのドキュメント](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/super)を読んだことがありますか? – Bergi

+0

こんにちは@Bergi私はES5でプロトタイプチェーンと継承のコンセプトを理解しています しかし、私はES6の新機能です。 – Sergiti

答えて

1

私は理解するのが最も簡単にはちょうどアイスクリームの新しいインスタンスを作成することであると思う:

var iceCream = new IceCream('vanilla'); 
console.log(iceCream) // IceCream {calories: 250, flavor: "vanilla", toppings: Array(0)} 

ご覧のとおり、あなたはカロリー値を渡すために必要とされていなかった - という親クラスを呼び出し、とりsuper値。

コンストラクタ関数があり、新しいインスタンスconstructorメソッドを最初に起動してインスタンス化すると、そのプロパティの説明に従ってプロパティが収集されます。

何か不明な点がありましたら、ご意見ください。私はより多くの情報を提供したいです。

+0

ありがとうございました。 カロリーに異なる値を設定する場合はどうすればよいですか? 500と言うことができます。 スーパー()はカロリーの値を設定しますか? – Sergiti

+1

インスタンス 'var iceCream = new IceCream( 'vanilla'、500);をインスタンス化するか、またはその後にカロリー値' iceCream.calories = 500'を変更することによって設定できます。 –

+1

私は参照してください。私は今、それをより良く理解しています。 superは、継承するオブジェクトからプロパティまたはメソッドにアクセスするためのものです。 ありがとう – Sergiti

関連する問題