반응형
▶ constructor
객체(인스턴스)를 생성하고 클래스 필드를 초기화하기 위한 특수한 메소드
※ 클래스 필드 : 자바스크립트의 생성자 함수에서 this에 추가한 프로퍼티
예문
1 2 3 4 5 6 7 8 9 10 11 12 13 | // 클래스 선언문 class Person { // constructor(생성자). 이름을 바꿀 수 없다. constructor(name) { // this는 클래스가 생성할 인스턴스를 가리킨다. // _name은 클래스 필드이다. this._name = name; } } // 인스턴스 생성 const me = new Person('Lee'); console.log(me); // Person {_name: "Lee"} | cs |
클래스는 constructor라는 이름을 가진 특별한 메서드를 하나씩만 가질 수 있습니다. 2개 이상일 시 SyntaxError을 유발합니다.
인스턴스를 생성할 때 new 연산자와 함께 호출한 것이 바로 constructor이며 constructor의 파라미터에 전달한 값은 클래스 필드에 할당합니다.
constructor은 생략할 수 있습니다. 생략하면 클래스에 constructor( ) { }를 포함한 것과 동일하게 동작합니다.
따라서 인스턴스에 프로퍼티를 추가하려면 인스턴스를 생성한 이후 프로퍼티를 동적으로 추가해야 합니다.
1 2 3 4 5 6 7 8 | class Person { } const me = new Person(); console.log(me); // Person {} // 프로퍼티 동적 할당 및 초기화 me._name = 'daeun'; console.log(me); // Person {_name: "daeun"} | cs |
constructor는 인스턴스의 생성과 동시에 클래스 필드의 생성과 초기화를 실행합니다.
따라서 클래스 필드를 초기화해야 한다면 constructor를 생략해서는 안됩니다.
1 2 3 4 5 6 7 8 | class Person { constructor(name) { this._name = name; } } const me = new Person('daeun'); console.log(me); | cs |
반응형