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

Yu Byung Suk님의 프로필 이미지
Yu Byung Suk

작성한 질문수

자바스크립트 비기너: 튼튼한 기본 만들기

4. 빌트인 오브젝트 구조, prototype

인스턴스 생성 가능 여부 기준에 대하여.

해결된 질문

작성

·

229

0

prototype 값 존재 여부가 인스턴스 생성 가능 여부를 결정한다고 설명하셨는데 다음과 같은 코드가 동작하는 이유는 무엇인가요?

function Test() {};

Test.prototype = undefined;

var t = new Test(); // 객체 생성

console.log(t); // 객체 출력

답변 1

3

김영보님의 프로필 이미지
김영보
지식공유자

Test.prototype = undefined;
==> Test.prototype이 존재하지 않는 것이 아니라 prototype이 존재하는 것입니다. undefined가 값이므로 prototype을 지우는 것이 아니라 prototype이 프로퍼티 이름이 되고 undefined가 프로퍼티 값이 됩니다. Math, JSON 오브젝트는 prototype 자체가 없으며 이러한 오브젝트는 new 연산자를 만들 수 없습니다.
추가해서 prototype에 null을 할당하면 더 이상 prototype에 메소드를 연결하지 않겠다는 의도입니다. undefined를 설정하지는 않습니다. 
--------------------
"prototype 값 존재 여부"가 아니라 "값"을 제외한 "prototype 존재 여부"가 정확한 표현입니다.

안녕하세요! 마지막 줄에 하신 말씀에서

값을 제외한 prototype 존재 === prototype 이라는 key가 존재

 

인가요?

김영보님의 프로필 이미지
김영보
지식공유자

prototype을 {key: value} 형태에서 보면  {prototype: {key: value}} 형태가 되므로 key라고 할 수는 있습니다. 하지만 {book: "자바스크립트"}처럼 일반적인 프로퍼티 키가 아니라 특수 목적을 갖고 있습니다. 뒤에서 다루므로 이 시점에서는 이 정도만 이해하셔도 되겠습니다.

Yu Byung Suk님의 프로필 이미지
Yu Byung Suk

작성한 질문수

질문하기