javascript class this

Tony·2022년 12월 6일
0

javascript

목록 보기
44/61
class GumballMachine {
  private state: State;
  private count: number;

  constructor(count: number) {
    this.count = count;
    if (count > 0) {
      this.state = new NoQuarterState(this);
    }
  }

  insertQuarter() {
    this.state.insertQuarter();
  }

  ejectQuarter() {
    this.state.ejectQuarter();
  }

  turnCrank() {
    this.state.turnCrank();
    this.state.dispense();
  }

  releaseBall() {
    console.log("알맹이가 나갑니다.");
    if (this.count !== 0) {
      this.count -= 1;
    }
  }

  getCount() {
    return this.count;
  }

  setState(state: State) {
    this.state = state;
  }

  getNoQuarterState() {
    return new NoQuarterState(this);
  }

  getHasQuarterState() {
    return new HasQuarterState(this);
  }

  getSoldState() {
    return new SoldState(this);
  }

  getSoldOutState() {
    return new SoldOutState(this);
  }
}

클래스 내에서 this는 자기 자신(인스턴스)를 가리킨다

class GumballMachine {
  // ...
  getSoldOutState() {
    return new SoldOutState(this);
  }
}

위 코드에서 getSoldOutState() 메소드의 리턴 값으로 SoldOutState 인스턴스를 생성한 것을 리턴하는데 이때 SoldOutState 생성자에 전달하는 this는 GumballMachine 인스턴스를 의미한다

profile
움직이는 만큼 행복해진다

0개의 댓글