생성자 함수 동작 방식
✏️

생성자 함수 동작 방식

Description
생성자 함수의 동작 방식을 알아보자
Tags
Published
Published May 30, 2020

생성자 함수 동작 방식

함수를 new 연산자와 함께 호출하면 생성자 함수로서 동작 한다.
생성자 함수로서 호출되면 다음과 같이 동작한다.

생성자 함수를 실행하면 일어나는일

1. 빈 객체 생성 / this 바인딩

  • 빈 객체가 새로 생성된다.
  • 생성자 함수 내에서 사용될 this가 이 빈객체에 바인딩된다
  • 생성된 빈 객체는 생성자 함수의 prototype 프로퍼티가 가리키는 객체를 자신의 프로토 타입 객체로 설정한다.

2. this를 통한 프로퍼티 생성

  • this가 바인딩 되었기 때문에 this를 통해서 프로퍼티, 메소드를 설정할수있다.

3. 생성된 객체 반환

  • 리턴문이 없는경우 암묵적으로 위에서 생성된 객체(this)를 반환한다.
  • 리턴문이 this가 아닌 다른 객체를 명시적으로 반환하면 해당 객체가 반환된다. (this를 반환하지 않으면 생성자 함수로서 역할을 못함)
 

생성자 함수로 생성한 객체와 객체 리터럴 방식으로 생성한 객체의 차이는?

 
const Person = function(name){ this.name = name; } const personA = new Person('juicy'); const personB = { name: 'juicy' }; console.dir(personA); console.dir(personB); /* 객체 리터럴 방식의 경우, 생성된 객체의 프로토타입 객체는 Object.prototype이다. 생성자 함수 방식의 경우, 생성된 객체의 프로토타입 객체는 Person.prototype이다. */
 
notion image