인프런 커뮤니티 질문&답변

kamser님의 프로필 이미지
kamser

작성한 질문수

코어 자바스크립트

프로토타입 (prototype)

프로토타입 getPrototypeOf(instance).constructor(n,a) 질문입니다.

해결된 질문

작성

·

339

1

  • 프로토타입 동영상 7:07에 나오는

    function Person(n,a){
        this.name = n;
        this.age = a;
    }
    
    var roy = new Person('로이',30);
    
    var royClone1 = new roy.__proto__.constructor('로이클론1',10);
    var royClone2 = new roy.constructor('로이클론2',25);
    var royClone3 = new Object.getPrototypeOf(roy).constructor('로이클론3',25);
    var royClone4 = new Person.prototype.constructor('로이클론4',15);

    여기서 Object.getPrototypeOf(roy) 이 줄이 실행이 안됩니다,

Uncaught TypeError: Object.getPrototypeOf is not a constructor

이렇게 나오는데 MDN에 찾아봐도 답을 모르겟어요

답변 1

2

정재남님의 프로필 이미지
정재남
지식공유자

아마도 그사이 모던 브라우저들의 파싱 규칙이
new 뒤에 처음 등장하는 괄호 앞까지를 constructor로 파악하도록 바뀌었나 봅니다.


var royClone3 = new (Object.getPrototypeOf(roy).constructor)('로이클론3', 25)

이렇게 new 뒤부터 constructor까지를 괄호로 감싸주어 '여기까지를 하나로 인식하라'고 강제해주면 제대로 동작하게 됩니다.

kamser님의 프로필 이미지
kamser
질문자

감사합니다 !!! 행복한 하루되세여 !!

kamser님의 프로필 이미지
kamser

작성한 질문수

질문하기