본문 바로가기

Dev-/java script, jQuery, Ajax

자바스크립트 객체 생성방법 new Object() vs 객체 리터럴({}) vs 생성자 함수

1. new Object()

/**
* 1. new Object() 생성자 사용
* @type {Object}
*/
let Human = new Object();
Human.name = 'alba';
Human.sex = 'female';

2. 객체 리터럴({})

let Human2 = {
name: 'john',
sex: 'male'
};



1, 2 방식은 내부적으로 같다.

하지만 자바스크립트에서는 객체 리터럴({}) 방식을 권고한다.

  A. 가독성

  B. 빠르다(다수의 객체를 동일하게 생성해놓고 시간을 비교해보면 다르다)

  C. new Object()는 오버라이딩이 가능하므로 위험

/** Object가 fucntion이 아니라 1이 되어버렸다. */
Object = 1;
let a = new Object();


3. 생성자 함수

사실 생성자 함수는 일반 함수이다. 

다만 사용할때 new를 붙여 사용하는데, 이렇게 사용하면 일반 함수와는 다르게 


자신을 프로토타입으로 지정하고 그 객체를 리턴한다.


선언에서 일반함수와의 차이가 없기 때문에, 생성자 함수로 사용할 함수는 첫글자대문자를 사용함을 권고한다.






/**
* 1. new Object() 생성자 사용
* @type {Object}
*/
let Human = new Object();
Human.name = 'alba';
Human.sex = 'female';

/**
* 2. 객체 리터럴({}) 사용
* @type {{sex: string, name: string}}
*/
let Human2 = {
name: 'john',
sex: 'male'
};

/**
* 3. 생성자 함수 사용
* @param name
* @param sex
* @constructor
*/
let Human3 = function(name, sex) {
this.name = name;
this.sex = sex;
}

let human3 = new Human3('jackson', 'female');

console.log(Human);
console.log(Human2);
console.log(human3);