【週刊ドットインストール】 256timesのクラスを準備中、Ruby/Ruby on Railsのロードマップページを追加
const panels = [ new Panel(), new Panel(), new Panel(), ];
今回、上記の記述によりインスタンスが3つ作成され、それらを配列の中に格納していると思うのですが、new Panel()を実行した時点で、Panelクラスのconstructorの中でthis.timeoutId = undefined;が異なるインスタンス内で1つずつ定義されました。
new Panel()
Panel
constructor
this.timeoutId = undefined;
これは、インスタンス生成時に3つの異なるtimeoutIdが定義され(初期値は全てundefined)、spinメソッドのsetTimeout()によって、全てのtimeoutIdが更新されていくという認識で合っていますでしょうか? また更新する際は、異なるtimeoutIdとして更新されていくのでしょうか? というのは、異なるtimeoutIdでなければ、仮にいずれかのストップボタン押下時に、どのタイマのIDを解除したいか選べないと思ったからです。
timeoutId
undefined
spin
setTimeout()
constructor() { const section = document.createElement('section'); section.classList.add('panel'); this.img = document.createElement('img'); this.img.src = this.getRandomImage(); // 初期化(ここがわからない) this.timeoutId = undefined; this.stop = document.createElement('div'); this.stop.textContent = 'STOP'; this.stop.classList.add('stop'); this.stop.addEventListener('click', () => { clearTimeout(this.timeoutId); }) section.appendChild(this.img); section.appendChild(this.stop); const main = document.querySelector('main'); main.appendChild(section); }
お手数ですが、ご指導のほどよろしくお願いいたします!
ドットインストールは、3分動画でマスターできるプログラミング学習サービスです。
3分で気軽に学習でき、スマートフォンからも視聴可能です。ホームページやWebサービスの制作を通して、実践的にプログラミングを学べます。
他にも、ゲーム制作やデータ分析・機械学習・AIに使われる言語まで幅広くカバー。学びたい分野のレッスンがきっと見つかります。
この回答を見るにはプレミアムプランへの登録が必要です
今回、上記の記述によりインスタンスが3つ作成され、それらを配列の中に格納していると思うのですが、
new Panel()を実行した時点で、Panelクラスのconstructorの中でthis.timeoutId = undefined;が異なるインスタンス内で1つずつ定義されました。これは、インスタンス生成時に3つの異なる
timeoutIdが定義され(初期値は全てundefined)、spinメソッドのsetTimeout()によって、全てのtimeoutIdが更新されていくという認識で合っていますでしょうか?また更新する際は、異なる
timeoutIdとして更新されていくのでしょうか?というのは、異なる
timeoutIdでなければ、仮にいずれかのストップボタン押下時に、どのタイマのIDを解除したいか選べないと思ったからです。お手数ですが、ご指導のほどよろしくお願いいたします!