const kukucorn = { age : 20 };
const insong = { age : 27 };
let kukucorn = new Object(); // 안티패턴 Number, Boolean
kukucorn.age = 20;
function Person(age) {
this.age = age;
}
const kukucorn = new Person(20);
const insong = new Person(19);
객체 리터럴 {...}을 사용하면 객체를 쉽게 만들 수 있고 유효범위 판별 작업도 발생하지 않는다.
유효범위 판별 작업이란? 생성자 함수를 사용했다면, 지역 유효범위에 동일한 이름의 생성자가 있을 수 있기 때문에 생성자 함수를 호출한 위치에서부터 전역까지 인터프리터가 거슬러 올라가며 유효범위를 검색한다.
그러면, 만들기도 쉽고 유효범위 판별 작업도 발생하지 않는 객체 리터럴이 짱인가?
아니다, 유사한 객체를 여러 번 만들어야 할 때가 있을 수 있다. 이 때, 객체 리터럴을 사용하게 되면 비효율적이고 코드의 양이 늘어난다.
이 때, new 연산자와 생성자 함수를 이용하면 유사한 객체를 여러 번 만드는데 용이하다.
생성자 함수와 일반 함수에 기술적인 차이는 없다.
다만, 관습적으로 생성자 함수의 첫 글자는 대문자로 시작한다.
또한, new 연산자를 함수 앞에 붙여 실행해야지만 생성자 함수로 동작한다.
new 연산자를 사용해서 함수를 실행할 때 내부적으로 어떻게 동작할까?