javaScript
프로토타입 방식 상속일 경우 constructor
mooyou
2024. 2. 2. 23:36
728x90
300x250
프로토타입 기반 삭송에서는 객체의 constructor 속성이 직접적으로 자신을 생성한 생성자 함수를 가리키지 않고 객체의 프로토타입 체인을 따라 올라가면서 처음으로 만나는 객체의 'constructor' 속성을 참조하게 된다.
일반적으로 프로토타입 기반 상속에서 자식 객체는 부모 객체를 상속받아 부모 객체의 메서드와 속성을 사용할 수 있다. 그래서 자식 객체의 'constructor'속성을 확인하면, 부모 객체의 생성자 함수를 참조하게 된다.
function Parent() {
// ...
}
function Child() {
// ...
}
Child.prototype = Object.create(Parent.prototype); // 프로토타입 상속
const myChild = new Child();
console.log(myChild.constructor); // Parent 생성자 함수를 참조
이 예제에서 myChild.constructor는 Parent 생성자 함수를 참조한다.
이는 Child의 프로토타입이 Parent의 인스턴스인 객체로 설정되었기 때문이다.
이를 해결하려면 constructor에 생성자를 설정해주면 된다.
myChild.prototype.constructor = Child;
728x90
반응형