なぜ nums をactivate 関数の中で定義するのですか?

constructor の中で定義すると、 splice によって nums が空になってしまうからです。
2022年1月14日
ユーザー

いつもお世話になっております。

見本の方では、Board クラスの activate 関数に const nums と定義されておられますが、
個人的にこの定義を constructor の方で定義し、
その後スタートを 2 回押すと、パネルの文字が消えてしまうのですが、なぜでしょうか?

ソースを下記に載せておきます。

class Board {
    constructor() {
      this.panels = [];
      this.nums = [0, 1, 2, 3]; ←こちらで定義
      for(let i = 0; i < 4; i++) {
        this.panels.push(new Panel());
      }
      this.setUp();
    }

(略)

activate() {
      this.panels.forEach(panel => {
        const num = this.nums.splice(Math.floor(Math.random() * this.nums.length), 1)[0];
        panel.activate(num);
      });
    }

以上です。ちなみに他の箇所のコードは見本と同じです。
お忙しいところ恐縮ですが、ご回答いただければ幸いです。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(6)