필자는 JavaScript의 프로토 타입 상속을 잘 이해하고 있지만 완벽하다고 말하지는 않습니다. 나는 자바 스크립트 상속을위한 최신 prototypal 문법을보고 있으며, 지금까지 꽤 좋은 의미가있다.JavaScript ES5 프로토 타입 상속에서 대리 클래스가 필요한 이유는 무엇입니까?
__proto__
은 상위 기능의 prototype
을 조회하는 데 사용됩니다. Cat
과 Mammal
이 있다고 가정하면 Cat.prototype.__proto__
을 Mammal.prototype
으로 간단하게 지정할 수 있습니다.
__proto__
의 사용은 권장하지되었다
ChildClass.prototype.__proto__ = ParentClass.prototype;
ChildClass.prototype.constructor = ChildClass;
. 따라서, 현대 표준화 된 방법은 ChildClass에의 프로토 타입을 수정하는 것도 수정하기 때문에,
ChildClass.prototype = ParentClass.prototype;
나쁜 지금
Object.create
ChildClass.prototype = Object.create(ParentClass.prototype);
ChildClass.prototype.constructor = ChildClass;
를 사용의이 ES5의 대리 접근 분명히
function Surrogate() {};
Surrogate.prototype = ParentClass.prototype;
ChildClass.prototype = new Surrogate();
ChildClass.prototype.constructor = ChildClass;
살펴 보자하는 것입니다 ParentClass의 프로토 타입입니다.
하지만 왜 우리가 이것을 할 수 없습니까?
ChildClass.prototype = new ParentClass();
왜 사이에 대리 물이 필요합니까?
개인적으로 나는 'ES5의 대리 접근법'이 완전히 정확하지 않다고 말하고 싶습니다. 2011 년에는'Object.create'가'5.1'에 추가되었으므로 현대 JS까지는 매우 오랜 시간이 걸렸습니다. – loganfsmyth
'new'가 사용되었습니다 * before * ES5는'Object.create'를 도입했습니다. – Bergi