돌아가기

어디에 프로퍼티가 추가될까요

중요도: 5

animal을 상속받는 rabbit이 있습니다.

rabbit.eat()을 호출했을 때, animalrabbit 중 어떤 객체에 full 프로퍼티가 생길까요?

let animal = {
  eat() {
    this.full = true;
  }
};

let rabbit = {
  __proto__: animal
};

rabbit.eat();

정답: rabbit

점 앞에 있는 객체는 this이기 때문에, rabbit.eat()rabbit을 변경합니다.

프로퍼티를 찾는 것과 프로퍼티를 실행하는 것은 완전히 다른 일입니다.

메서드 eat은 프로토타입에서 찾을 수 있지만, 메서드를 실행할 땐 thisrabbit이 되어 해당 메서드가 실행됩니다.