현재 버전

function C() {};
C.prototype = null;

var o = new C();

위 코드에서 o.prototype와 C.prototype이 한 래퍼런스를 바라보고 있고, C.prototype만 체이닝이 끊긴 것이라서 두 prototype이 같지 않다고 이해하면 되는건가요?

아니면 prototype이 null인 생성자 함수로 객체를 생성할 때는 자동으로 Object.prototype과 연결되게 되는 구조로 이해하면 되는건가요?

var test1 = Object.getPrototypeOf(o) === C.prototype; // false
var test2 = Object.getPrototypeOf(o) === Object.prototype; // true

전자의 경우로 이해하면, 위 결과에서 o.prototype.prototype === Object.prototype이 true가 되야한다고 생각하는데, o.prototype === Object.prototype이 왜 true인지 궁금합니다.

제 질문실력이 부족해 도와주시려는 많은 분들께 혼선을 드리는것 같아 죄송합니다. ㅜㅜ


수정 이력

2020-10-16 11:40:44 에 아래 내용에서 변경 됨 #3
function C() {};
C.prototype = null;

var o = new C();

위 코드에서 o.prototype와 C.prototype이 한 래퍼런스를 바라보고 있고, C.prototype만 체이닝이 끊긴 것이라서 두 prototype이 같지 않은 것은 이해했습니다.

var test1 = Object.getPrototypeOf(o) === C.prototype; // false
var test2 = Object.getPrototypeOf(o) === Object.prototype; // true

허나 위 결과에서 o.prototype.prototype === Object.prototype이 true가 되야한다고 생각하는데, o.prototype === Object.prototype이 왜 true인지 궁금합니다.

제 질문실력이 부족해 도와주시려는 많은 분들께 혼선을 드리는것 같아 죄송합니다. ㅜㅜ

2020-10-16 11:36:29 에 아래 내용에서 변경 됨 #2
function C() {};
C.prototype = null;

var o = new C();

위 코드에서 o.prototype --> C.prototype을 가르키고 있고, C.prototype === null 이라고 생각합니다.

var test1 = Object.getPrototypeOf(o) === C.prototype; // false
var test2 = Object.getPrototypeOf(o) === Object.prototype; // true

허나 위의 결과에서, o.prototype이 왜 C.prototype을 가르키지 않는지 궁금합니다.

또한 cat11님이 설명해주신대로 null이 Object 타입인건 맞지만, 위 결과는 null === Object.prototype이라고 해석되는데, 이게 왜 true인지 궁금합니다.

제 질문실력이 부족해 도와주시려는 많은 분들께 혼선을 드리는것 같아 죄송합니다. ㅜㅜ

2020-10-16 11:24:48 에 아래 내용에서 변경 됨 #1

null이 Object 타입인 것은 알고 있습니다.

function C() {};
C.prototype = null;

var o = new C();

위 코드에서 o.prototype --> C.prototype을 가르키고 있고, C.prototype === null 이라고 생각합니다.

var test1 = Object.getPrototypeOf(o) === C.prototype; // false
var test2 = Object.getPrototypeOf(o) === Object.prototype; // true

허나 위의 결과에서, o.prototype이 왜 C.prototype을 가르키지 않는지 궁금합니다.

또한 cat11님이 설명해주신대로 null이 Object 타입인건 맞지만, 위 결과는 null === Object.prototype이라고 해석되는데, 이게 왜 true인지 궁금합니다.

제 질문실력이 부족해 도와주시려는 많은 분들께 혼선을 드리는것 같아 죄송합니다. ㅜㅜ