현재 버전

시점을 이야기 하시니까, Javascript의 변수 호이스팅과 연관이 있을 수도 있다는 생각이 문득 드네요.

댓글 수정하신걸 잠깐 봤는데, 두번째 생각의 근거..라고 하기에는 미미하지만 다음과 같습니다.

1. 호이스팅이나 여러가지 요건이 작용해서 C.prototype이 null로 할당되기 전의 주소를 상속받았다고 가정한다면, 다음 조건이 부합하지 않습니다.

Object.getPrototypeOf(o) === Object.prototype // true

o.__proto__가 C.prototype의 원본을 상속받았다면  o.__proto__.__proto__ === Object.prototype 처럼 결과가 나와야하지, 위의 결과처럼  o.__proto__ === Object.prototype 이 나오면 안됩니다.


2. 1번을 뒷받침하는 근거입니다. 할당의 시점 문제가 거론되는 이상 정확한 실험이라고는 할 수 없습니다.

function C() {}

C.prototype.funcA = function () {
  return "a";
};

C.prototype = null;

const o = new C();

console.log(typeof o.funcA); // undefined


3. 1번과 이어지는 근거인데, 객체의 __proto__가 Object.prototype과 같은 경우는 다음 두가지입니다.

const temp1 = {};
const temp2 = new Object();

근거라고 하기에는 너무 미미합니다. 하지만 C.prototype을 상속하지 않았다고 말할 수는 있을 것 같습니다.

Frudy님 같이 고민해서 저도 좋았습니다. 시작한지 얼마 안됐지만 좋은 사이트네요 ㅎㅎ 질문2 에대한 답변은 정말 몰랐는데 감사합니다. 행복한 주말 보내세요~!


수정 이력

2020-10-17 01:13:25 에 아래 내용에서 변경 됨 #4

시점을 이야기 하시니까, Javascript의 변수 호이스팅과 연관이 있을 수도 있다는 생각이 문득 드네요.

댓글 수정하신걸 잠깐 봤는데, 두번째 생각의 근거..라고 하기에는 미미하지만 다음과 같습니다.

1. 호이스팅이나 여러가지 요건이 작용해서 C.prototype이 null로 할당되기 전의 주소를 상속받았다고 가정한다면, 다음 조건이 부합하지 않습니다.

Object.getPrototypeOf(o) === Object.prototype // true

o.__proto__가 C.prototype의 원본을 상속받았다면  o.__proto__.__proto__ === Object.prototype 처럼 결과가 나와야하지, 위의 결과처럼  o.__proto__ === Object.prototype 이 나오면 안됩니다.

2. 1번을 뒷받침하는 근거입니다. 할당의 시점 문제가 거론되는 이상 정확한 실험이라고는 할 수 없습니다.

function C() {}

C.prototype.funcA = function () {
  return "a";
};

C.prototype = null;

const o = new C();

console.log(typeof o.funcA); // undefined

3. 1번과 이어지는 근거인데, 객체의 __proto__가 Object.prototype과 같은 경우는 다음 두가지입니다.

const temp1 = {};
const temp2 = new Object();

근거라고 하기에는 너무 미미합니다. 하지만 C.prototype을 상속하지 않았다고 말할 수는 있을 것 같습니다.

Frudy님 같이 고민해서 저도 좋았습니다. 시작한지 얼마 안됐지만 좋은 사이트네요 ㅎㅎ 질문2 에대한 답변은 정말 몰랐는데 감사합니다. 행복한 주말 보내세요~!

2020-10-17 01:13:11 에 아래 내용에서 변경 됨 #3

시점을 이야기 하시니까, Javascript의 변수 호이스팅과 연관이 있을 수도 있다는 생각이 문득 드네요.

댓글 수정하신걸 잠깐 봤는데, 두번째 생각의 근거..라고 하기에는 미미하지만 다음과 같습니다.

1. 호이스팅이나 여러가지 요건이 작용해서 C.prototype이 null로 할당되기 전의 주소를 상속받았다고 가정한다면, 다음 조건이 부합하지 않습니다.

Object.getPrototypeOf(o) === Object.prototype // true

o.__proto__가 C.prototype의 원본을 상속받았다면  o.__proto__.__proto__ === Object.prototype 처럼 결과가 나와야하지, 위의 결과처럼  o.__proto__ === Object.prototype 이 나오면 안됩니다.

2. 1번과 이어지는 근거인데, 객체의 __proto__가 Object.prototype과 같은 경우는 다음 두가지입니다.

const temp1 = {};
const temp2 = new Object();

근거라고 하기에는 너무 미미합니다. 하지만 C.prototype을 상속하지 않았다고 말할 수는 있을 것 같습니다.

Frudy님 같이 고민해서 저도 좋았습니다. 시작한지 얼마 안됐지만 좋은 사이트네요 ㅎㅎ 질문2 에대한 답변은 정말 몰랐는데 감사합니다. 행복한 주말 보내세요~!

2020-10-17 01:01:38 에 아래 내용에서 변경 됨 #2

시점을 이야기 하시니까, Javascript의 변수 호이스팅과 연관이 있을 수도 있다는 생각이 문득 드네요.

댓글 수정하신걸 잠깐 봤는데, 두번째 주장의 근거..라고 하기에는 미미하지만 다음과 같습니다.

1. 호이스팅이나 여러가지 요건이 작용해서 C.prototype이 null로 할당되기 전의 주소를 상속받았다고 가정한다면, 다음 조건이 부합하지 않습니다.

Object.getPrototypeOf(o) === Object.prototype // true

o.__proto__가 C.prototype의 원본을 상속받았다면  o.__proto__.__proto__ === Object.prototype 처럼 결과가 나와야하지, 위의 결과처럼  o.__proto__ === Object.prototype 이 나오면 안됩니다.

2. 1번과 이어지는 근거인데, 객체의 __proto__가 Object.prototype과 같은 경우는 다음 두가지입니다.

const temp1 = {};
const temp2 = new Object();

근거라고 하기에는 너무 미미합니다. 하지만 C.prototype을 상속하지 않았다고 말할 수는 있을 것 같습니다.

Frudy님 같이 고민해서 저도 좋았습니다. 시작한지 얼마 안됐지만 좋은 사이트네요 ㅎㅎ 두번째 질문에대한 답변은 정말 몰랐는데 감사합니다. 행복한 주말 보내세요~!

2020-10-17 00:59:45 에 아래 내용에서 변경 됨 #1

시점을 이야기 하시니까, Javascript의 변수 호이스팅과 연관이 있을 수도 있다는 생각이 문득 드네요. 하지만 그것이 연관되었다해도  o.__proto__.__proto__ === Object.prototype 처럼 결과가 나와야하는데  Object.getPrototypeOf(o) === Object.prototype  와 같은 결과가 나오는것은 여전히 이해가 안갑니다.

같이 고민해서 저도 좋았습니다. 시작한지 얼마 안됐지만 좋은 사이트네요 ㅎㅎ 두번째 질문에대한 답변은 정말 몰랐는데 감사합니다. 행복한 주말 보내세요~!