Object 생성자 함수는 new 연산자와 함께 호출하면 빈 객체를 생성하여 반환하고 이 빈 객체에 프로퍼티나 메서드를 추가할 수 있다.
const obj = new Object();
{ }
// 프로퍼티 추가
obj.test1 = "test1";
console.log(obj.test1); // "test1"
JS에서는 Object 생성자 함수 외에도 String , Number , Boolean 등 여러 빌트인 생성자를 제공한다.
객체 리터럴 생성 방식은 아래와 같은 방식으로 객체를 생성하는 방식을 말한다.
const obj = {
a: 1,
func: () => {},
}
장점
단점
단 하나의 객체만 생성하기 때문에 동일한 프로퍼티를 갖는 객체를 여러 개 생성해야 한다면 코드를 중복 작성해야 한다.
const c1 = {
radius: 5,
testMethod() {
return 1;
},
};
const c2 = {
radius: 10,
testMethod() {
return 1;
},
};
**console.log(c1.testMethod === c2.testMethod); // false
console.log(c1.testMethod() === c2.testMethod()); // true**
testMethod)와 구조를 갖는 c1 , c2 객체가 있다.radius) 값을 가지고 있지만 메세드의 경우 동일한 기능을 가지고 있다.
testMethod)를 각 객체마다 새로 만들어서 할당해야 하는 낭비가 발생한다.생성자 함수란 이름 그대로 객체(인스턴스)를 생성하는 함수이다.
생성자 함수를 이용하면 객체 리터럴 방식의 문제점(동일한 구조의 객체 생성 시 코드 중복 작성)을 해결할 수 있다.
function Circle(r) {
this.r = r;
this.testMethod = function () {
return 1;
};
//return;;
}
// 생성자 함수 이용
const c1 = new Circle(5);
const c2 = new Circle(10);
c1 , c2 를 위해 각각의 객체 리터럴을 코드를 작성할 필요가 없다.