javascript/모던 자바스크립트 Deep Dive
클래스(Class)
yongfront
2024. 2. 9. 14:45
반응형
SMALL
자바스크립트의 클래스(Class)는 ES6(ECMAScript 2015)에서 도입된, 객체 지향 프로그래밍을 보다 쉽게 구현할 수 있게 해주는 구문입니다. 클래스는 사실상 프로토타입 기반 상속을 사용하는 기존 자바스크립트의 상속 메커니즘을 더 명확하고 간결하게 작성할 수 있게 해주는 "문법적 설탕(syntactic sugar)"입니다. 이는 개발자가 클래스 기반 언어에서 익숙한 방식으로 자바스크립트에서도 클래스를 정의하고 상속받을 수 있게 합니다.
클래스의 기본 구조
자바스크립트에서 클래스는 class 키워드를 사용하여 정의됩니다. 클래스 내부에는 생성자(constructor)와 메소드를 정의할 수 있습니다. 생성자는 새로운 인스턴스가 생성될 때 호출되며, 인스턴스 초기화에 사용됩니다. 메소드는 클래스의 행동을 정의하고, 인스턴스 또는 클래스 자체(static 메소드)에 속한 함수입니다.
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
// 인스턴스 생성
const person1 = new Person('John', 30);
person1.greet(); // "Hello, my name is John and I am 30 years old." 출력
클래스 상속
자바스크립트에서는 extends 키워드를 사용하여 클래스 상속을 구현할 수 있습니다. 상속을 통해 한 클래스(자식 클래스)가 다른 클래스(부모 클래스)의 속성과 메소드를 상속받을 수 있습니다. 이를 통해 코드의 재사용성과 유지보수성이 향상됩니다.
class Employee extends Person {
constructor(name, age, jobTitle) {
super(name, age); // 부모 클래스의 constructor 호출
this.jobTitle = jobTitle;
}
introduce() {
console.log(`Hello, my name is ${this.name}, I am ${this.age} years old, and I work as a ${this.jobTitle}.`);
}
}
// 인스턴스 생성
const employee1 = new Employee('Jane', 28, 'Software Developer');
employee1.introduce(); // "Hello, my name is Jane, I am 28 years old, and I work as a Software Developer." 출력
employee1.greet(); // 부모 클래스의 메소드 호출 가능
주의사항
- 클래스 정의는 호이스팅(hoisting)이 일어나지 않습니다. 즉, 클래스를 사용하기 전에 선언해야 합니다.
- 클래스 내부의 코드는 엄격 모드(strict mode)에서 실행됩니다.
- 클래스 메소드는 열거할 수 없습니다. (즉, for...in 루프나 Object.keys 메소드로 나열할 수 없습니다.)
- 클래스는 프로토타입 기반 상속의 문법적 설탕이므로, 자바스크립트의 기본 프로토타입 상속 메커니즘을 이해하는 것이 중요합니다.
자바스크립트 클래스는 객체 지향 프로그래밍 패러다임을 사용하여 더 구조화되고 명시적인 방식으로 코드를 조직화할 수 있는 강력한 방법을 제공합니다.
728x90
반응형
LIST