(JS basic) 3. new 연산자

한정(Han Jung)
Jung-han
Published in
2 min readApr 20, 2019

우리들이 어느 언어에서든 자연스럽게 사용하고 있는 new 연산자의 과정을 자세히 보려한다. 자바스크립트에서 존재하는 this 객체나 prototype등을 지정하는 일을 new 연산자가 실행될 때 해준다. 일단 보자.

new constructor[([arguments])]
* constructor: const객체 인스턴스의 타입을 기술(명세)하는 함수

그럼 (가정하여 작성된) new 연산자의 의사코드를 보면서 어떤 과정으로 이뤄지는지 살펴보자. (글 보단 그게 쉬울것 같다.)

실제 코드가 이렇다는 것은 아니다..

new 연산자의 역할을 하는 NEW함수를 임의로 만들었다.

  1. 먼저 호출되는 함수의 prototype을 판단한다. primitive type인 경우 Object를 prototype으로 지정해준다.
  2. 해당 prototype을 상속하는 새로운 객체를 생성한다. (실제로 이때 inaccessible, [[prototype]], accessible, prototype 등을 지정해준다.)
  3. 이 새로 생성된 object를 this 객체로 지정하여 apply 함수를 호출한다.
  4. 만약 반환된 값이 primitive일 경우 내부적으로 만들어 놓은 object를 반환하고 아닐 경우 함수를 호출하지 않았던 만들어 놓았던 object를 반환한다.

--

--