학습(구)/JavaScript(구)

자바스크립트 - new 연산자와 생성자 함수

잉아당 2021. 11. 9. 23:28
728x90

객체 생성을 생성자 함수를 이용해 생성할 수 있습니다.

function User(name) {
  this.name = name;
  this.isAdmin = false;
}

let user = new User("보라");

먼저 this = {}로 빈객체가 생성되며 함수 본문을 실행 해 프로퍼티를 추가합니다. 그런 다음 this를 반환하여 객체를 반환합니다.

생성자를 이용하면 프로퍼티의 내용이 다른 동일한 객체를 쉽게 생성할 수 있습니다. => 재사용 가능

 

모든 함수들은 new 연산자를 이용해 생성자 함수가 될 수 있으며 첫글자가 대문자인 함수는 new 연산자를 이용해 실행해야 한다는 약속이 있습니다.

 

let user = new function() {
  this.name = "John";
  this.isAdmin = false;

  // 사용자 객체를 만들기 위한 여러 코드.
  // 지역 변수, 복잡한 로직, 구문 등의
  // 다양한 코드가 여기에 들어갑니다.
};

한번만 사용되는 복잡한 객체는 익명 함수(new function)를 이용해 캡슐화 하며 재사용을 막을 수 있습니다.

 

new.target : new 연산자를 통해 객체를 생성했는지 알 수 있습니다.

 

생성자에 return을 한다면 this 대신 해당 객체가 반환이 됩니다.

생성자 함수에 메서드를 작성하는 것도 가능합니다.

function User(name) {
  this.name = name;

  this.sayHi = function() {
    alert( "제 이름은 " + this.name + "입니다." );
  };
}

let bora = new User("이보라");