2017-09-07 17 views
0

私はクラスを作成しました:クラスを継承し、親コンストラクタを呼び出す方法は?

class Human { 
    constructor(name){ 
     this.name = name; 
    } 

    greet(){ 
     alert(this.name); 
    } 
} 

それは正常に動作します。 Personクラスのコンストラクタに初期化されていない使用this - 私はそのようなクラスから継承しようとすると、しかし、私は、このようなエラーが発生しているエラー

class Person extends Human{ 
    constructor(name, age){ 
     super.constructor(name); 
     this.age = age; 
    } 
    greet(){ 
     super.greet(this.name + this.age); 
    } 
} 

var no = new Person("Brent", 65); 

を持っています。

どのように私は年齢と名前の両方を警告するように適切に継承できますか?

答えて

4

親コンストラクタを呼び出すには、super(…)ではなくsuper.constructor(…)を使用する必要があります。この特別なsuperコールでは、extending classthisキーワードがインスタンスで初期化されます。

+0

私は、男はこれと同じ答えがあるsuper.constructor https://imgur.com/a/akj3v https://www.youtube.com/watch?v=z4IMGJqot-U – kilogram

+2

を使用していたユーチューブに動画を見てそのYouTube動画のコメントで提供されているように、 'super(...)'だけを使用して 'super.constructor(...) 'を呼び出さないでください。同じソリューションのこの同じ問題は、そのビデオに複数回も提供されます。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/super – OneNeptune

+0

ありがとうございました。私はそれを得た – kilogram

0

あなたのコンストラクタにはsuper()を呼び出してください。

関連する問題