JS에서 객체를 생성하는 하나의 방법
일반적으로 function 키워드 사용하여 정의,
new 키워드와 함께 호출할 경우 새로운 객체 만들어짐
생성자 함수 내부의 this 키워드는 새롭게 생성된 객체를 가리킴
여기에 속성 추가하면 해당 객체에 저장됨
ex-
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.greet = function() {
console.log(`안녕하세요, 저는 ${this.name}입니다.);
};
const person1 = new Person('Alice', 25);
생성자 함수는 유지보수성이 떨어진다는 문제가 있음
명확한 클래스 개념이 없어서 상속 구현 시 프로토타입 체인을 이용해야 하는데, 가독성 좋지 않음.
다른 객체지향 언어와 형태가 많이 다르기 때문에 이해하기 비교적 어렵기도 함.
new 키워드 없이 일반 함수처럼 호출될 수도 있어 혼동 유발
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`안녕하세요, 저는 ${tins.name}입니다`);
}
}
const person2 = new Person('Bob', 30);
이처럼 class 사용하면 생성자와 메서드 명확하게 정의 가능
또한 다른 객체지향 언어의 문법과 유사한 형태여서 이해도 쉬움
extends, super 이용하여 상속 간결히 구현 가능.
static, getter/setter 등 객체지향 관련 키워드를 지원하기도 함
또한 생성자 함수와 달리 일반 함수처럼 호출할 수 없도록 하는 제약 추가됨