자바스크립트 new Object와 {} 생성 방식

아끼는 후임이 면접을 봤는데 질문 중 하나가 아래와 같았다.

자바스크립트에서 객체 생성 시, new Object와 그냥 괄호 {}를 쓰는 것의 차이는 무엇인가?

후임이 그런 질문을 받았다고 나한테 던지는데.. 어...음... 자 공부하자.

코드적으로 보면 아래와 같은 차이인데, 내부적으로 동작은 큰 차이가 없다.
obj2 = {} 로 선언하는 방식을 객체 리터럴 방식이라 한다. 내부적으로는 new Object를 호출하게 된다.

var obj1 = new Object()  // new 연산자를 이용한 객체 생성
var obj2 = {}            // 객체 리터럴로 객체를 생성

그렇다면 두 방식 중 사용을 권고하는 방식은 무엇일까?
답은 객체 리터럴로 객체를 생성하는 방식이다.

그 이유로는 아래와 같이 3가지가 있다. (물론 더 있을 수도 있다.)

1. 코딩하기 편하며 가독성이 좋다.
2. 속도가 빠르다. (근거자료 : https://jsperf.com/new-array-vs-literal/26)
3. 자바스크립트의 오버라이딩을 방지할 수 있다.

1번은 직관적으로 이해가 될 것이고
2번은 근거자료가 있으니 보면 성능을 알 수 있을 것이고
3번에 대해 좀 더 알아보자.

new Object에서 Object는 오버라이딩 될 수 있다. 가령 아래와 같다.

Object = function(){
 console.log("Object 오버라이딩");
};
var obj = new Object(); //Object 오버라이딩 출력
결론적으로 new Object로 객체를 생성하기 보단 객체 리터럴 {}로 생성하잔 말씀!!

댓글 없음:

댓글 쓰기