개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.05 15:39

Object.create(proto) 사용 시 오류

목록
  • 애자일광신도 15시간 전 2025.04.05 15:39 새글
  • 2
    1
제가 Object.create(proto) 메서드를 사용하여 객체를 생성했을 때, 원시 타입의 프로퍼티를 상속받는 방법을 모르겠습니다. 예를 들어, Number 객체의 프로퍼티를 상속받는 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  15시간 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 9,350건 / 3 페이지

검색

게시물 검색