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
'개발 > javascript' 카테고리의 다른 글
22장 this - 바인딩 call, apply, bind (0) | 2023.12.13 |
---|---|
19장 프로토타입 - __proto__와 prototype (2) | 2023.12.05 |
19장 프로토타입 - 생성자 함수 (0) | 2023.11.30 |
19장 프로토타입 - hasOwnProperty, Object.create (0) | 2023.11.28 |
21장 빌트인 전역 함수 - encodeURI, decodeURI, encodeURIComponent, decodeComponent (0) | 2023.11.24 |