super()が呼び出されるまで「this」というキーワードが「未定義」であることがわかりました。私は自分自身で(将来的に)これらの回答をどこで調べることができるかを学ぶことだけを求めています。この動作を示しJavascript super()が呼び出されるまでサブクラスで「this」が定義されていない理由
コードを以下に与えられる:
class BaseClass {
constructor(){
this.baseVar = 1;
}
}
class SubClass extends BaseClass {
constructor(...args){
try {
console.log('this BEFORE calling super. this:', this);
} catch(ex) {
console.log('this BEFORE calling super. this: caused exception!');
}
super(...args);
this.subVar = 2;
console.log('this AFTER calling super. this:', this);
}
}
var base = new BaseClass();
var subclass = new SubClass();
これからの出力は、以下に示す:
this BEFORE calling super. this: caused exception!
this AFTER calling super. this: SubClass { baseVar: 1, subVar: 2 }
例外により、メッセージが表示されます。なぜそれを捕まえて無視しているのですか? –
文書化されている場所は、言語全体が文書化されているのと同じ場所にあります...言語仕様。 –
*なぜ*それが許可されていないかについてのより良い説明については、以下を参照してください。[Uncaught ReferenceError:これはクラスコンストラクタでは定義されていません](https://stackoverflow.com/questions/32516204/uncaught-referenceerror-this-is -not-defined-in-class-constructor) – JCOC611