자바스크립트 클래스와 생성자 함수를 혼용해서 사용하는 방법은 가능한가요?
클래스는 class
키워드를 사용하여 선언하며, 생성자 함수는 function
키워드와 new
연산자를 사용하여 객체를 생성합니다. 이 두 가지 방식을 혼용하여 사용할 수 있습니다. 예를 들어, 다음과 같은 코드를 살펴보겠습니다.
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log("안녕하세요!");
}
}
function Student(name, age, grade) {
Person.call(this, name, age);
this.grade = grade;
}
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;
const student = new Student("홍길동", 20, 3);
console.log(student.name); // 홍길동
console.log(student.age); // 20
console.log(student.grade); // 3
student.greet(); // 안녕하세요!
위의 예시에서 Person
클래스는 name
과 age
속성을 가진 객체를 생성하는 역할을 하고, greet
메소드를 가지고 있습니다. 그리고 Student
생성자 함수는 Person
을 상속받아 grade
속성을 추가하는 역할을 합니다.
Student
생성자 함수 내부에서 Person.call(this, name, age)
를 호출하여 Person
생성자 함수를 호출하고, Object.create(Person.prototype)
를 통해 Person
프로토타입 객체를 상속합니다. 이렇게 함으로써 Student
객체는 Person
의 속성과 메소드를 모두 사용할 수 있습니다.
따라서, 클래스와 생성자 함수를 혼용해서 사용하여 객체 지향적인 프로그래밍을 할 수 있습니다. 이는 기존의 프로토타입 기반 상속 방식을 사용하고 있는 코드와도 호환되므로, 코드를 점진적으로 리팩토링하거나 추가 개발할 때 유용하게 사용할 수 있습니다.