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

어승준·2023년 10월 9일

JS 스터디

목록 보기
9/26
post-thumbnail

📌 생성자 함수에서 new를 붙이는 이유와 붙이지 않으면 어떻게 되는 지 설명해주세요

  • 생성자 함수의 조건
  1. 함수이름은 대문자로 시작한다.
  2. 반드시 'new' 연산자를 붙여 실행한다.
  • new 는 어떤 동작을 해주나?
  1. 빈 객체를 만들어서 this에 할당한다.
  2. 함수 본문을 실행하면서, this에 새로운 프로퍼티를 추가해서 this 를 수정한다.
  3. this를 반환한다.
  • new 연산자와 함께 함수를 호출하면

    • 생성자 함수로 동작 : [[Call]]이 아니라 [[Construct]]호출
  • new 연산자 없이 생성자 함수 호출 시

    • 일반 함수로 호출 : [[Construct]]가 호출되는 것이 아니라 [[Call]]이 호출된다

📌 생성자 함수의 인스턴스 생성 과정을 설명해주세요

  • 생성자 함수의 역할은 인스턴스를 생성하는 것과 생성된 인스턴스를 초기화(인스턴스 프로퍼티 추가 및 초기값 할당)하는 것이다.
// 생성자 함수
function Circle(radius) {
  // 인스턴스 초기화
  this.radius = radius;
  this.getDiameter = function () {
    return 2 * this.radius; 
  };
}

// 인스턴스 생성
const circle1 = new Circle(5); // 반지름이 5인 Circle 객체를 생성
  1. 인스턴스 생성과 this 바인딩
  2. 인스턴스 초기화
  3. 인스턴스 반환

📌 생성자 함수에서 this 키워드는 무엇을 가리키나요?

  • new 키워드를 사용하여 생성자 함수를 호출하게 되면 이때의 this는 "만들어질 객체"를 참조한다.
  • 만약 코드에서 new 키워드를 사용하지 않았다면 this의 값은 함수가 호출된 컨텍스트인 window가 되었을 것이다.

📌 객체를 생성할 때 객체 리터럴에 의한 방식 대신 생성자 함수에 의한 방식을 사용하는 이유에 대해 설명해주세요.

  • 객체 리터럴에 의한 방식의 경우, 단 하나의 객체만 생성. 그러므로 동일 프로퍼티 갖는 객체 여러 개 생성 시 비효율적
  • 생성자 함수에 의한 방식의 경우, 프로퍼티 구조가 동일한 객체 여러 개 간편하게 생성 가능

📌 new.target 은 주로 언제 사용되는지와 어떤 값들을 반환하는지 설명해 주세요.

  • new.target은 현재 생성자 함수가 new 연산자와 함께 호출되었는지를 확인하기 위해 사용됩니다.
  • 함수가 생성자로 호출되었을 때 new.target은 생성자 함수 자체를 가리키고, 그렇지 않을 경우 undefined를 반환합니다.
profile
鈍筆勝聰(둔필승총) : '둔한 붓이 총명함을 이긴다' (서툴더라도 기록으로 남기는 것이 사람의 기억보다 훨씬 오래 보전된다) - 정약용

0개의 댓글