ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • new 연산자와 생성자 함수
    개발 지식/자바스크립트 2022. 7. 25. 09:39

    다음 내용은 모던 자바스크립트(https://ko.javascript.info)를 참고로 하였다.

     

    생성자 함수(constructor function)와 일반 함수에 기술적인 차이는 없다. 다만 생성자 함수는 아래 두 관례를 따른다.

    1. 함수 이름의 첫 글자는 대문자로 시작합니다.
    2. 반드시 'new' 연산자를 붙여 실행합니다.

     

    function User(name) {
      this.name = name;
      this.isAdmin = false;
    }
    
    let user = new User("보라");

     

    new User(...)를 써서 함수를 실행하면 아래와 같은 알고리즘이 동작합니다.

    1. 빈 객체를 만들어 this에 할당합니다.
    2. 함수 본문을 실행합니다. this에 새로운 프로퍼티를 추가해 this를 수정합니다.
    3. this를 반환합니다.

     

    function User(name) {
      // this = {};  (빈 객체가 암시적으로 만들어짐)
    
      // 새로운 프로퍼티를 this에 추가함
      this.name = name;
      this.isAdmin = false;
    
      // return this;  (this가 암시적으로 반환됨)
    }

     

    모든 함수는 생성자 함수가 될 수 있다는 점을 잊지 말아야 한다. new를 붙여 실행한다면 어떤 함수라도 위에 언급된 알고리즘이 실행된다. 이름의 '첫 글자가 대문자’인 함수는 new를 붙여 실행해야 한다는 점도 잊지 말자. 공동의 약속이다.

     

    생성자 내 메서드

    생성자 함수 내부에 프로퍼티만 아니만 메서드 또한 추가될 수 있다.

    function User(name) {
      this.name = name;
    
      this.sayHi = function() {
        alert( "제 이름은 " + this.name + "입니다." );
      };
    }
    
    let bora = new User("이보라");
    
    bora.sayHi(); // 제 이름은 이보라입니다.

     

     

    • 생성자 함수(짧게 줄여서 생성자)는 일반 함수이다. 다만, 일반 함수와 구분하기 위해 함수 이름 첫 글자를 대문자로 쓴다.
    • 생성자 함수는 반드시 new 연산자와 함께 호출해야 한다. new와 함께 호출하면 내부에서 this가 암시적으로 만들어지고, 마지막엔 this가 반환된다.

    '개발 지식 > 자바스크립트' 카테고리의 다른 글

    this  (0) 2022.07.24
    참조에 의한 객체 복사  (0) 2022.07.23
    객체  (0) 2022.07.22
    화살표 함수 기본  (0) 2022.07.22
    형 변환  (0) 2022.07.22

    댓글

Designed by Tistory.