次のクラスと変数があったとします。

class Staff {
  constructor(name, address, department) {
    this.name = name;
    this.address = address;
    this.department = department;

    this.recieved = [];
  }

  getScore(order) {
    this.recieved.push(order);
  }

  message() {
    console.log(`${this.name}さんは、${this.department}所属です。`);
  }
}

const tanaka = new Staff("田中", "埼玉県", "営業部");

受注した件数だけgetScoreで、recievedに件数を追加したいと考えています。

tanaka.getScore(3);

console.log(tanaka.recieved);で確認すると、

image2

recieved に 3 が追加されています。

では、連続で追加してみましょう。

tanaka.getScore(3).getScore(5).getScore(1);

image3

エラーが発生しました。

これは、1 回目のgetScoreが呼び出されて終わりとなっているので、2 回目以降のgetScoreundefinedとなって返されたからです。

2 回目以降も呼び出されるには、getScorereturn thisを追加します。

class Staff {
  constructor(name, address, department) {
    this.name = name;
    this.address = address;
    this.department = department;

    this.recieved = [];
  }

  getScore(order) {
    this.recieved.push(order);
    return this;
  }

  message() {
    console.log(`${this.name}さんは、${this.department}所属です。`);
  }
}

先程の

tanaka.getScore(3).getScore(5).getScore(1);

を確認すると、

image4

連続で呼び出すことができました。

ブログ一覧