자바스크립트에서 객체를 만들 때 객체 생성자를 사용할 수 있는 방법은 두 가지가 있다.
ES6부터는 클래스를 사용하여 객체 생성자를 정의할 수 있다. 클래스는 생성자 함수의 새로운 문법적 표현이다.
<script>
class Person {
// 생성자 함수
constructor(name, age) {
this.name = name;
this.age = age;
}
// 메서드 정의
sayHello() {
console.log(`안녕하세요 ${this.name}`);
}
}
// 객체 생성
let person1 = new Person("홍길동", 20);
// 메서드 호출
person1.sayHello();
</script>
전통적인 객체 생성자 방식은 함수 선언을 사용하여 객체를 생성하는 방법이다. 이 방식에서 new 키워드를 사용하여 객체를 생성한다.
<script>
// 객체 생성자 함수 정의
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHello = function() {
console.log(`안녕하세요 ${this.name}`);
};
}
// 객체 생성
let person1 = new Person("홍길동", 30);
// 메서드 호출
person1.sayHello();
</script>
객체 생성자 함수에 프로토타입을 사용하여 함수를 등록하면 메모리 낭비를 줄일 수 있다.
<script>
function Person(name, age) {
this.name = name;
this.age = age;
// this.sayHello = function() {
// console.log(`안녕하세요 ${this.name}`);
// };
}
Person.prototype.sayHello = function() {
console.log(`안녕하세요 ${this.name}`);
}
let person1 = new Person("박현아", 29);
person1.sayHello();
</script>