어디에 프로퍼티가 추가될까요
중요도: 5
animal
을 상속받는 rabbit
이 있습니다.
rabbit.eat()
을 호출했을 때, animal
과 rabbit
중 어떤 객체에 full
프로퍼티가 생길까요?
let animal = {
eat() {
this.full = true;
}
};
let rabbit = {
__proto__: animal
};
rabbit.eat();
정답: rabbit
점 앞에 있는 객체는 this
이기 때문에, rabbit.eat()
은 rabbit
을 변경합니다.
프로퍼티를 찾는 것과 프로퍼티를 실행하는 것은 완전히 다른 일입니다.
메서드 eat
은 프로토타입에서 찾을 수 있지만, 메서드를 실행할 땐 this
가 rabbit
이 되어 해당 메서드가 실행됩니다.