HTML5 마스터Q&A는 HTML CSS JavaScript 개발자들의 질문과 답변을 위한 커뮤니티 사이트입니다.

Javascript prototype의 constructor property가 제대로 설정안되면 어떤 영향을 끼치나요?

0 추천

클래스를 정의하기 위해서 constructor 함수를 만드는데 만약 prototype 설정에서 기본으로 존재하는 constructor가 제대로 설정안되면 어떤 영향을 끼치나요. 예를 들어

function Foo() {
    this.value = 1;
}

Foo.prototype = {};

var obj = new Foo();

이렇게 prototype을 정의 하면 기본으로 설정되어있는 constructor가 없어지게 되고 이런 코드가 많은데 문제가 없는지 궁금합니다.

궁금이 (200 포인트) 님이 2013년 6월 28일 질문

1개의 답변

0 추천
constructor 프로퍼티를 변경하는 것은 대부분의 경우 실제 내부적으로 아무런 영향을 끼치지 않습니다.

하지만 만약 실제 코드내에서 constructor 프로퍼티를 활용한다면 문제가 생길수 있겠죠. 예를 들어 정확하게 어떤 오브젝트가 어떤 생성자로 만들어졌는지 알아내야 하는 코드가 들어간다면 위의 경우 new Foo()로 만들어졌지만 constructor값을 설정하지 않았으므로 어떤 함수로 객체가 생성되었는지 obj.constructor로는 알아낼 수가 없겠죠.

자바스크립트에서는 모든 객체가 constructor를 가지고 있다고 가정할 수 없습니다. prototype를 정의하는데 있어서 constructor를 생략하는 경우가 많기 때문에 constructor는 가급적 활용하지 않고 신경쓰지 않는게 좋습니다.

그러니 constructor를 따로 처리해서 쓰지 않는다고 하면 굳이 prototype을 객체 리터럴로 정의할때 일부러 constructor값을 넣어줄 필요도 없겠죠.
회색 (2,140 포인트) 님이 2013년 6월 28일 답변
...