例のコードでは、myOtherFuncは継承されたキャンバス変数を出力しますが、キャンバスをクリックしてmyFuncを呼び出すとthis.canvasは未定義として出力されます。どうしてこれなの?クラスのイベントハンドラがそのクラスの変数を継承しない理由
HTML:
<!DOCTYPE HTML>
<html>
<body>
<canvas id="drawCanvas" style="border:1px solid #000000;"></canvas>
<script>
class myClass {
constructor() {
this.canvas = document.getElementById('drawCanvas');
this.ctx = this.canvas.getContext('2d');
this.canvas.addEventListener('click', this.myFunc);
this.myOtherFunc();
}
myFunc(event) {
console.log(this.canvas);
}
myOtherFunc() {
console.log(this.canvas);
}
}
let c = new myClass;
</script>
</body>
</html>