[javascript] 프로토타입 체인에서 속성 재정의 방법

자바스크립트에서는 객체의 프로퍼티에 접근할 때 프로토타입 체인을 따릅니다. 때때로 우리는 상위 객체에서 상속받은 속성을 재정의하고 싶을 수 있습니다. 아래에서는 이를 하는 방법에 대해 알아보겠습니다.

1. 직접 속성을 재할당

가장 간단한 방법은 객체의 프로퍼티를 직접 재할당하는 것입니다. 예를 들어,

function Person(name) {
  this.name = name;
}

Person.prototype.greet = function() {
  return "Hello, " + this.name;
};

let john = new Person("John");
john.greet(); // "Hello, John"

john.greet = function() {
  return "Howdy, " + this.name;
};

john.greet(); // "Howdy, John"

위 예제에서 john 객체의 greet 메서드를 다시 정의하고 있습니다.

2. Object.create()를 이용해 새로운 프로토타입 객체 생성

다른 방법은 Object.create()를 사용하여 새로운 프로토타입 객체를 생성하는 것입니다.

function Person(name) {
  this.name = name;
}

Person.prototype.greet = function() {
  return "Hello, " + this.name;
};

let john = new Person("John");
john.greet(); // "Hello, John"

let newProto = Object.create(Person.prototype);
newProto.greet = function() {
  return "Howdy, " + this.name;
};

john.__proto__ = newProto;

john.greet(); // "Howdy, John"

정리

프로토타입 체인에서 속성을 재정의하는 방법은 간단합니다. 직접 속성을 재할당하는 방법과 Object.create()를 사용하여 새로운 프로토타입 객체를 만드는 방법을 활용할 수 있습니다. 이를 통해 객체의 동작을 유연하게 확장하고 수정할 수 있습니다.