(JS basic) 3. new 연산자
Published in
2 min readApr 20, 2019
우리들이 어느 언어에서든 자연스럽게 사용하고 있는 new 연산자의 과정을 자세히 보려한다. 자바스크립트에서 존재하는 this 객체나 prototype등을 지정하는 일을 new 연산자가 실행될 때 해준다. 일단 보자.
new constructor[([arguments])]
* constructor: const객체 인스턴스의 타입을 기술(명세)하는 함수
그럼 (가정하여 작성된) new 연산자의 의사코드를 보면서 어떤 과정으로 이뤄지는지 살펴보자. (글 보단 그게 쉬울것 같다.)
new 연산자의 역할을 하는 NEW함수를 임의로 만들었다.
- 먼저 호출되는 함수의 prototype을 판단한다. primitive type인 경우 Object를 prototype으로 지정해준다.
- 해당 prototype을 상속하는 새로운 객체를 생성한다. (실제로 이때 inaccessible, [[prototype]], accessible, prototype 등을 지정해준다.)
- 이 새로 생성된 object를 this 객체로 지정하여 apply 함수를 호출한다.
- 만약 반환된 값이 primitive일 경우 내부적으로 만들어 놓은 object를 반환하고 아닐 경우 함수를 호출하지 않았던 만들어 놓았던 object를 반환한다.