javaScript
constructor 속성 변경
mooyou
2024. 1. 17. 21:40
728x90
300x250
JS에서 모든 객체는 'constructor'라는 속성을 갖는다.
이 속성은 객체를 생성한 생성자(constructor)함수를 가리킨다. 객체를 만들 때 사용된 함수가 무엇이었는지를 나타내는데 유용하다.
예를들어, 다음과 같은 객체가 있을 경우
function Person(name) {
this.name = name;
}
var john = new Person("John");
여기서 'john'객체는 'Person'생성자 함수를 통해 생성되었다. 이 객체의 'constructor'속성은 'Person'함수를 가리킨다. 즉 'john.constructor'는 'Person'이 된다.
하지만, 프로토타입 체인을 사용하여 상속을 구현하면 일부 예상치 못한 동작이 발생할 수 있다.
MyChild.prototype = new MyParent();
위와 같이 프로토타입을 설정하면, 'MyChild'의 프로토타입 객체에는 'constructor'속성이 'MyParent'를 가리키게 된다.
따라서 명시적으로 'MyChild'를 가르키도록 프로토타입 객체의 'constructor'속성을 설정해야 한다.
MyChild.prototype.constructor = MyChild;
이렇게 하면 상속을 구현한 객체에서 'constructor'를 사용할 때 올바른 생성자를 가리키게 된다.
728x90
반응형