해결된 질문
작성
·
230
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을 {key: value} 형태에서 보면 {prototype: {key: value}} 형태가 되므로 key라고 할 수는 있습니다. 하지만 {book: "자바스크립트"}처럼 일반적인 프로퍼티 키가 아니라 특수 목적을 갖고 있습니다. 뒤에서 다루므로 이 시점에서는 이 정도만 이해하셔도 되겠습니다.
안녕하세요! 마지막 줄에 하신 말씀에서
값을 제외한 prototype 존재 === prototype 이라는 key가 존재
인가요?