내가 자바 스크립트에 새로운 오전과 함께Javascript 프로토 타입 상속을 사용하여보아야 할 동작입니까?
이 문서를 상속을 사용하는 방법에 대한 질문이 지금까지 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#More_flexible_constructors)를 도움이되었습니다,하지만 크롬의 디버거에서 관찰하고있는 행동은 제가 좋겠 일치하지 않는 것 기대해. 나는이 볼 디버거에서
Base = function() {
this.value = 0;
};
Base.prototype.constructor = Base;
Derived = function() {
Base.call(this);
};
Derived.prototype = new Base();
Derived.prototype.constructor = Derived;
:
내가 이가지 경우가 할당을 통해 스테핑 후
을,이
참조
인스턴스의 값이 변경되었지만 프로토 타입의 값이 변경되지 않았습니다. 예상 되나요?
내가 확실히 이해하지 못하는 두 번째 방법은이 (여기 참조 다시 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#More_flexible_constructors (섹션 '재산 상속 재 방문')
Base = function() {
};
Base.prototype.constructor = Base;
Base.prototype.value = 0;
// Derived as before...
이후의 하단에 냈다 코드를 참조
값이 새로 추가 된 과제 속성. 이 프로토 타입의 값을 변경하면 안됩니까? 또는 프로토 타입을 통과하여 명시 적으로 값에 액세스해야합니다 (예 : derived.value.prototype.value = 5
이 정보는 크게 감사하겠습니다!
감사합니다.
UPDATE :
는 응답 모든 사람에게 감사는, 그것이 적절한 시간에 Object.create를 사용하지 않는 내 함께 할 수 있었다 밝혀졌습니다.
및 디버거에서 내가 기대했던 가지고 : 나는이 내 코드를 업데이트
이 바로 보인다! :)
는 당신의 도움을 @sixfingeredman 주셔서 감사하고 @Bergi!그것은 유용한 아무것도하지 않는
Base.prototype.constructor = Base;
:없는 주제에있는 동안
예, 예상됩니다. – Bergi
Child의 프로토 타입을 설정하기 위해 Parent 인스턴스를 생성하지 마십시오. 대신 Object.create 상속 및 혼합 기능을 사용하는 방법은 여기에서 자세히 설명합니다. http://stackoverflow.com/questions/16063394/prototypical-inheritance-writing-up/16063711#16063711 – HMR