돌아가기

어디에서 쓸까요?

중요도: 5

animal에서 상속받은 rabbit이 있습니다.

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

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

let rabbit = {
  __proto__: animal
};

rabbit.eat();

정답: rabbit

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

프로퍼티를 찾는 것과 프로퍼티에 뭔가를 실행하는 것은 서로 다른 일입니다.

메서드 rabbit.eat은 프로토타입에서 처음으로 발견되지만, thisrabbit이 할당되어 실행됩니다.