빠른 배경 : JavaScript에서 각 객체 유형에 대한 생성자 함수에는 prototype
속성이 있습니다. 이는 prototype
생성 된 각 객체가 프로토 타입 체인에서 다음 단계로 사용하는 객체를 나타냅니다. 한 유형을 다른 유형에서 고유하게 prototype
하려면 하위 유형을 상위 유형의 새 인스턴스로 설정할 수 있습니다 .
예를 들면 다음과 같습니다.
var Parent = function() { /* constructor business */ }
Parent.prototype.parentProp = "some parent property";
var Child = function() { /* constructor business */ }
Child.prototype = /*** !! Some prototype object goes here !! ***/
Some prototype object goes here
위의 코드에서 " "자리 에 어떤 코드가 들어가야하는지에 대한 질문이 있습니다. 나의 첫 번째 본능은 부모 (즉, new Parent()
) 의 인스턴스를 구성하는 것입니다. 한 사용자가 다음과 같이 씁니다.
아니요,
new bar()
프로토 타입 객체 에는 사용하지 마십시오 !
(... 이것은 많은 SO 답변과 의견에서 본 의견이지만 지금 당장 가지고있는 유일한 예입니다.)
다른 옵션은로 사용 Object.create(Parent.prototype)
하는 것 Child.prototype
입니다. 내가 아는 한, 이것은 또한 새로운 Parent
인스턴스를 생성 하지만 Parent
생성자를 실행하지는 않습니다 .
부모 유형에서 프로토 타입 객체를 생성 할 때 생성자 함수 실행을 피해야하는 이유를 누군가 설명 할 수 있습니까? 몇 가지 중요한 상속 문제가 있습니까? 또는 이러한 패턴이 프로토 타입 모범 사례와 충돌하는 생성자의 오용입니까 (예 : 프로토 타입을 만들 때 생성자를 실행하면 일부 우려가 위반 되는가)?
Object.create
구현되는 방식입니다.