클래스와 기본 문법
-
class 문법으로 동일한 종류의 객체를 여러 개 생성할 수 있음
-
constructor() 는 객체 기본 상태를 설정해주는 메서드로 new에 의해 자동 호출.
-
내부에서 다양한 메서드 정의 가능
-
메서드 사이엔 쉼표가 필요 없음
-
class 는 함수의 한 종류로 함수 본문은 생성자 메서드인 constructor 에서 가져오고 클래스 내에서 정의한 메서드는 className.prototype 에 저장
-
class 는 생성자 함수의 단순 편의 문법 아닌 차이점 존재
-
차이점으로 class로 만든 함수엔 특수 내부 프로퍼티인 [[FunctionKind]]:”classConstrucor” 가 이름표 처럼 붙어서 new 와 함께 호출하지 않으면 에러 발생(JS 가 확인)
-
차이점으로 JS 엔진이 클래스 생성자 문자열로 표현 시 class로 시작하는 문자열 표현
-
차이점으로 클래스의 prototype 프로퍼티에 추가된 메서드 전체의 enumerable 플래그는 false라 열거할 수 없음 (for..in시 순회대상에서 제외할 때 유용)
-
차이점으로 클래스는 항상 엄격 모드 로 실행됨
-
클래스도 함수처럼 다른 표현식 내부에서 정의, 전달, 반환, 할당 가능하며 기명 함수 표현식 또한 사용 가능
-
클래스도 리터럴 사용해 만든 객체처럼 계산된 프로퍼티, getter, setter 포함 가능
-
계산된 메서드 이름 만들 수 있음
-
클래스 필드는 어떤 종류의 프로퍼티도 클래스에 추가할 수 있으며 prototype 이 아닌 개별 객체에만 클래스 필드 지정됨
-
클래스 필드는 생성자가 그 역할 다 한 이후에 처리되며 복잡한 표현식이나 함수 호출 결과 사용 가능
-
쿨래스 필드에서 화살표 함수로 객체마다 독립된 함수 만들고 this 를 해당 객체에 바인딩 가능 (브라우저 환경에서 이벤트 리스너로 설정 시 유용)