
Object.create(proto) 메서드는 프로토 타입을 지정하여 새로운 객체를 생성하는 메서드입니다. 그러나 이 메서드는 원시 타입의 프로퍼티를 상속받을 수 없습니다. 원시 타입의 프로퍼티는 객체가 아니기 때문입니다.
원시 타입의 프로퍼티를 상속받으려면, 프로토 타입에 원시 타입의 값을 할당한 객체를 만들어야 합니다.
#hostingforum.kr
javascript
const numberProto = {
valueOf: function() {
return 10;
}
};
const numberObj = Object.create(numberProto);
console.log(numberObj.valueOf()); // 10
위의 예시에서는 Number 객체의 프로퍼티인 valueOf를 상속받은 객체를 생성했습니다. 이 객체는 원시 타입의 프로퍼티를 상속받은 것처럼 보이지만, 실제로는 객체의 프로퍼티인 valueOf를 호출한 것입니다.
위의 예시에서 valueOf를 호출한 것은 numberObj가 아닌 numberObj.valueOf()입니다. numberObj.valueOf()은 numberProto의 valueOf를 호출한 것입니다.
#hostingforum.kr
javascript
const numberProto = {
valueOf: function() {
return 10;
}
};
const numberObj = Object.create(numberProto);
console.log(numberObj.valueOf === numberProto.valueOf); // true
위의 예시에서는 numberObj.valueOf와 numberProto.valueOf가 같은 함수를 호출한 것을 확인했습니다.
위의 예시에서 numberProto에 원시 타입의 값을 할당한 객체를 만들면 원시 타입의 프로퍼티를 상속받은 것처럼 보입니다. 그러나 실제로는 객체의 프로퍼티인 valueOf를 호출한 것입니다.
원시 타입의 프로퍼티를 상속받으려면, 프로토 타입에 원시 타입의 값을 할당한 객체를 만들면 됩니다.
2025-04-05 15:40