Language/JavaScript

JavaScript 08. 생성자 함수에 의한 객체 생성

ej503 2022. 9. 13. 09:00
모던 자바스크립트 Deep Dive 자바스크립트의 기본 개념과 동작 원리를 읽고 정리한 내용입니다.

 

17.1 생성자 함수에 의한 객체 생성

 

  • 생성자 함수는 new 연산자와 함께  호출하여 객체 (인스턴스)를 생성하는 함수를 말한다.
  • 생성자 함수에 의해 생성된 객체를 인스턴스라 한다.

 

17.2.3 생성자 함수의 인스턴스 생성 과정

 

  • 인스턴스를 생성하고 생성된 인스턴스를 초기화 (인스턴스 프로퍼티 추가 및 초기값 할당)하는 것이다.
  • 바인딩이란 식별자와 값을 연결하는 과정을 의미한다. 변수 이름(식별자)와 확보된 메모리 공간의 주소를 바인딩하는것이다. this가 가리킬 객체를 바인딩하는 것도 바인딩의 예이다. 

 

17.2.4 내부 메서드 [[Call]]과 [[Construct]]

 

  • function foo() { //일반적인 함수로서 호출, [[Call]]이 호출된다. foo(); //생성자 함수로서 호출, [[Construct]]가 호출된다. new foo(); }
  • constructor은 함수 선언문, 함수 표현식, 클래스이다.
  • non-constructor은 메서드, 화살표 함수이다.

 

17.2.7 new.target

 

  • new 연산자와 함께 생성자 함수로서 호출되면 함수 내부의 new.target은 함수 자신을 가리킨다. new 연산자 없이 일반 함수로서 호출된 함수 내부의 new.target은 undefined이다. 
  • Object와 function 생성자 함수는 new 연산자 없이 호출해도 new 연산자와 함께 호출했을 때와 동일하게 동작한다.