2017-08-02 8 views
1

次のパターンは、Polymer 2.0 ES6 Webコンポーネントを構築する際に多く使用されます。ポリマー2.0でコンストラクタとスーパーを使用するのはいつですか?

constructor() { 
    super(); 
} 

Here the documentation describes calling the super(); function when defining an element.

However here in the Shop Appパターンは、以下の要素で、3回続いて:ショップapp.html、ショップリップルcontainer.html、ショップタブ-overlay.html。

いつsuper()に電話する必要がありますか?この通話はいつconstructor()機能内にある必要がありますか? the Shop appの場合のようにsuper()と呼ぶことの結果はどうなりますか?

編集: ユーザー(@ 4castle)がこの質問を提案しましたmight be a duplicate of this question。私は正直に反対します。この質問はポリマーを扱いますが、他のものはリアクトを取り扱っています。もう1つの質問は、super()関数に渡される引数について質問します。この質問では、super()が呼び出されていない場合と、電話する場所が最適な場所(つまり、constructor()の場合)を知りたいと考えています。

+0

[super()は何の引数をとっていますか?](https://stackoverflow.com/questions/39822941/what-does-super-do-with-any-arguments) – 4castle

+0

'super() 'クラスが別のクラスを' extends'するときに 'が必要です。 'super()'を呼び出さずに 'this'にアクセスしようとすると' ReferenceError'がスローされます。 – 4castle

+0

@ 4castle:あなたのコメントとあなたが指摘した他の質問に基づいて追加して答えました。なぜ私はそれが異なっていると思うかを説明するために質問を編集しました。私が正しい道を歩いていると思っているのであれば教えてください。 – Mowzer

答えて

2

いつsuper()に電話する必要がありますか?

super()は、要素のスーパー(親クラス)のコンストラクタを呼び出します。要素の定義が別のクラスを拡張するクラスを定義し、super()が明示的に呼び出されない場合、要素はデフォルトでスーパークラスのコンストラクタを呼び出します。

このコールはいつconstructor()機能の中にある必要がありますか?

super()を呼び出す適切な場所は、要素のconstructor()メソッド内にあります。

Shopアプリの場合のようにsuper()と表示されない場合の影響は何ですか? super()が明示的に呼び出されていない場合Polymer.Elementコンストラクタは、デフォルトで呼び出された - 、ショップアプリケーションの場合のように

class MyElement extends Polymer.Element {...} 

場合

1

は、実際には、それはまたあなたのスーパーの完全な利益を得るために、以下の(親)を起動するための良い方法です:あなたのコンポーネントが準備ができたときに要素でレディ機能を呼び出します

ready() { 
    super.ready(); 
} 

関連する問題