2014-10-04 3 views
7

나는 생성자 함수의 프로토 타입을 동결하는 것은 기본적으로 생성자 체인을 파산 부작용을 한 것으로 나타났습니다자바 스크립트 생성자의 프로토 타입을 동결의 부작용은

http://jsfiddle.net/jhpxv20b/2/

BX가 마지막에 정의되지 않은 이유 좋은 이유가 있나요?

이것이 버그가 아니라면, 어떻게 바이너리에서 x2가 1이 될까요?

+2

질문에 정확히 동일한 코드가 없더라도 [이 질문] (http://stackoverflow.com/questions/19698533/creating-new-objects-from-frozen-parent-objects/19698581#19698581) 이것이 왜 그런지 설명합니다. –

답변

2

This answer 여기에서 무슨 일이 일어나고 있는지 잘 설명합니다.

는 특히, 내 실수는 내가이 줄 끝에서

B.prototype = new A(); 

B.prototype는 사실에도 불구하고에 'X'속성 (예를 가지고 객체가되었다 실현하지 않았다였습니다 B.prototype.x === undefined가 true이고 B.prototype.hasOwnProperty ('x')도 참입니다.

나는 이것에 위의 라인 변경 :

B.prototype = Object.create(A.prototype); 

을이 날 생성자 체인을 깨지 않고 B.prototype을 동결 할 수 있습니다.

콴타스에게 감사드립니다. 94 올바른 방향으로 나를 가리키고 있습니다.

관련 문제