Open ddongule opened 3 years ago
빈 객체를 만들어 this에 할당한다. 함수 본문을 실행한다. this에 새로운 property를 추가해 this를 수정한다. this를 반환한다.
function User(name) {
// this = {};
// 새로운 프로퍼티를 this에 추가
this.name = name;
this.isAdmin = false;
// return this; (this의 암시적 반환)
}
prototype 프로퍼티
를 가지고, 이 prototype 프로퍼티
는 프로토타입 객체의 constructor를 사용합니다. 하지만 화살표 함수는 prototype 프로퍼티
를 가지고 있지 않기 때문에 생성자 함수로 사용할 수 없습니다.function User(name) {
// 1. 빈 객체가 암시적으로 만들어짐
// this = {};
// 2. 새로운 프로퍼티를 this에 추가함
this.name = name;
this.isAdmin = false;
// 3. this가 암시적으로 반환됨
// return this;
}
new
를 통해 객체를 생성하면, 자바스크립트에서는 this
를 생성된 인스턴스로 할당한다. 따라서 생성자는 빈 객체인 this
를 가지게 된다.
이후 인스턴스 내부의 메소드는 this.[메소드명]
을 통해 생성자의 멤버변수나 다른 메서드를 사용할 수 있다.
new 연산자로 클래스를 호출하는 순간 내부에 정의한 메서드가 들어있는 객체(인스턴스)가 생성되고, constructor()가 자동 호출된다. 이때 constructor 내부에서 선언한 클래스 필드(프라퍼티)는 새로 생성되어 반환되는 객체, 즉 인스턴스를 가리키는 this에 바인딩이 된다.