2016-08-01 9 views
-2

MDNでは、コンストラクタメソッドを指定しないと、デフォルトのコンストラクタが使用されることが記述されています。Javascriptのデフォルトのコンストラクタ

基底クラスの場合

、デフォルトコンストラクタは次のとおりです。

派生クラスの
constructor() {} 

、デフォルトコンストラクタは次のとおりです。派生クラスのデフォルトコンストラクタは、残りのパラメータ(... argsを)を持っているのはなぜ

constructor(...args) { 
    super(...args); 
} 

基本クラスのデフォルトのコンストラクタにはありませんか?

+1

スーパークラスコンストラクタの引数の量が可変であれば、superに引数を渡します。 '...'は変化する量を意味します。 – Li357

+0

"なぜ、派生クラスのデフォルトコンストラクタには残りのパラメータ(... args)があり、ベースクラスのデフォルトコンストラクタには"? "がありません。 –

+0

基本クラスは 'Object.prototype'であり、' constructor'は引数をとりません。 – DevZer0

答えて

0

この正確な状況では、..argsは不要ですが、ベースオブジェクトがObjectではない場合を考慮する必要があります。この場合、スーパーコンストラクタを引数で呼び出すことは完全に合理的です。

したがって、クラスABがあるとします。 Aは明示的に定義されたコンストラクタを持っていますが、Bはありませんが、ABのスーパークラスです。この場合、new B(myArg)を呼び出すと、Aconstructorを呼び出すことは論理的です。

関連する問題