“Uncaught ReferenceError: this is not defined” nel costruttore della class

Sto giocando con le nuove cose in JavaScript / ES6. Ricevo un Uncaught ReferenceError: this is not defined(...) player.js:5 nel mio codice. Per quanto vedo, non ci sono errori qui! è un insetto? Qualche soluzione alternativa?

index.html

      Test    initialize();   

entity.js

 "use strict"; class Entity { constructor() { console.log("Entity"); } } 

player.js

 "use strict"; class Player extends Entity { constructor() { console.log("Created"); // <- error here } } 

Questo è un fatto della nuova syntax di class. La sottoclass deve chiamare super() affinché la class sia correttamente inizializzata, ad es

 super(arg1, arg2, argN); 

con tutti gli argomenti necessari al costruttore genitore.

È necessario che, se l’esecuzione raggiunge la fine di una funzione di constructor , il valore di this deve essere stato inizializzato su qualcosa. O hai bisogno di essere in una class base (dove this è autoinizializzato), hai chiamato super() quindi this è inizializzato, o return un object alternativo.

 class Player extends Entity { constructor() { super(); console.log("Created"); ;// error here } } 

Puoi pensare a come le funzioni di constructor hanno un return this automatico alla fine di esse.