본문 바로가기
javaScript

constructor 속성 변경

by mooyou 2024. 1. 17.
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
반응형

댓글