본문 바로가기
개발/javascript

25장 클래스 - 클래스 정의, 클래스와 생성자 함수 비교

by 올럭Dev 2023. 12. 7.
728x90

클래스와 생성자 함수의 차이에 대해 알아 보겠습니다.

목차 📑

  • 클래스 정의
  • 클래스와 생성자 함수의 차이

클래스 정의

// 클래스 선언문
class Person {
// 생성자
constructor(name){
 // 인스턴스 생성 및 초기화
 this.name = name; // pulic
}

// 프로토타입 메서드
sayHi(){
 console.log(`Hi! My name is ${this.name}`);
}

// 정적 메서드
static sayHello() {
 console.log('Hello!');
}
}

// 인스턴스 생성
const me = new Person('Jeon');
// 인스턴스의 프로퍼티 참조
console.log(me.name);
// 프로토타입의 메서드 호출
me.sayHi(); // Hi! My name is Jeon
// 정적 메서드 호출
Person.sayHello(); // Hello!

클래스와 생성자 함수의 차이

  • 클래스를 new 연산자 없이 호출하면 에러가 발생합니다. 생성자 함수를 new 연산자 없이 호출하면 일반 함수를 호출합니다.
  • 클래스는 상속을 지원하는 extends와 super 키워드를 제공합니다.
  • 클래스는 호이스팅이 발생한 않는 것처럼 동작합니다. 함수 선언문으로 정의된 생성자 함수는 함수 호이스팅이, 함수 표현식으로 정의한 생성자 함수는 변수 호이스팅이 발생합니다.
  • 클래스 내의 모든 코드에는 암묵적으로 strict mode가 지정되어 실생되며, strict mode를 해제할 수 없습니다. 생성자 함수는 암묵적으로 strict mode가 적용되지 않습니다.
  • 클래스의 constructor, 프로토타입 메서드, 정적 메서드는 모두 프로퍼티 어트리뷰트 [[Enumerable]]의 값이 false 입니다. 열거되지 않습니다.

마치며 🍺

클래스와 생성자 함수 중 어떤게 낫다고 말할 수 없지만, 둘 다 객체지향 프로그래밍 방식이라고 생각하면 될 것 같습니다.

함께하면 좋은 글 😍

728x90