2016-06-12 14 views
1

javascriptをスローエラー子クラスのスーパー()を呼び出すと、私はこのようなコードを開始しました:私は<strong>ES2015はJavaScript</strong>をclasssesを学ぶためにしようとしている

ファイル:index.jsを

/* parent class */ 
class Thing { 

construct(){ 
    console.log("thing constructor"); 
} 

} 

/* child class */ 
const Human = class Human extends Thing { 

construct(){ 
    super(); 
} 

} 


let Person = new Human(); 

ファイル:実行してpackage.json

{ 
    "scripts": { 
    "serve": "nodemon index.js --exec babel-node" 
    }, 
    "dependencies": { 
    "babel-cli": "^6.9.0", 
    "babel-preset-es2015": "^6.9.0" 
    } 
} 

$ npm run serve

が、私はこれを得た:

SyntaxError: index.js: super() outside of class constructor (14:3) 
     12 | 
     13 | construct(){ 
    > 14 | super(); 
     | ^
     15 | } 

私はここで何をしないのですか?

ノードのバージョン:6.2.1

答えて

2

constructorの代わりにconstructキーワードを使用しているのは、その理由です。 super()メソッドは、クラスのconstructor()からのみ呼び出すことができます。だからあなたはエラーを受けている。

また、あなたがconstとしてHumanクラスを割り当てる必要はありませんし、直接クラス宣言ES6クラスの詳細については

let Person = new Human(); 

(ES)参照した後、それを使用することができます。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

class Thing { 
 
    constructor(){ 
 
    console.log("thing constructor"); 
 
    } 
 
} 
 

 
/* child class */ 
 
class Human extends Thing { 
 
    constructor(){ 
 
    super(); 
 
    } 
 
} 
 

 
let p = new Human();

+0

答えはとても面白い簡単な、おかしい男です –

2

コンストラクタの名前がconstructor、ないconstructです。 MDN documentationを参照してください。

このため、constructは通常の方法と解釈されます。エラーが示すように、superは、通常のメソッドではなく、コンストラクタ内でのみ呼び出すことができます。

+0

OMG!だからシンプルな、感謝 –

関連する問題