[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()
를 사용하여 새로운 프로토타입 객체를 만드는 방법을 활용할 수 있습니다. 이를 통해 객체의 동작을 유연하게 확장하고 수정할 수 있습니다.