Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
25. 클래스
✏️ 기억에 남는 내용
클래스란?
프로토타입의 문법적 설탕?
클래스는 일종의 함수이며 기존 프로토타입 기반 패턴을 클래스 기반 패턴처럼 사용할 수 있도록 하는
문법적 설탕
이라고 볼 수도 있지만, 생성자 함수와 정확히 동일하게 동작하지는 않는다.클래스 정의
class
키워드를 사용하여 정의(일반적)하거나 표현식으로 정의할 수 있다. 따라서 클래스는 값으로 사용할 수 있는 일급 객체이다.클래스 호이스팅
클래스 선언문도 변수 선언, 함수 정의와 마찬가지로 호이스팅이 발생하지만 let, const 키워드로 선언한 변수처럼 호이스팅된다. (호이스팅이 발생하지 않는 것처럼 동작)
클래스의 메서드
클래스 몸체에서 정의할 수 있는 메서드는 constructor(생성자), 프로토타입 메서드, 정적 메서드가 있다.
constructor
인스턴스를 생성하고 초기화하기 위한 특수한 메서드다.(이름 변경 금지)
프로토타입 메서드
생성자 함수에 의한 객체 생성 방식과는 달리 명시적으로 프로포타입에 메서드를 추가하지 않아도 기본적으로 프로토타입 메서드가 된다.
정적 메서드
인스턴스를 생성하지 않아도 호출할 수 있는 메서드로, 메서드에
static
키워드를 붙이면 된다.정적 메서드 vs 프로토타입 메서드
프로퍼티
인스턴스 프로퍼티
constructor 내부에서 정의하여 클래스가 생성한 인스턴스의 프로퍼티가 된다.
접근자 프로퍼티
접근자 함수(데이터 프로퍼티의 값을 읽거나 저장할 때 사용, getter 함수와 setter 함수)로 구성된 프로퍼티로,
클래스 필드 정의 제안
'클래스 필드'란 클래스 기반 객체지향 언어에서 클래스가 생성할 인스턴스의 프로퍼티를 가리키는 용어다.
private 필드 정의
제안, 정적 필드를 정의하기 위해static 필드 정의
제안상속에 의한 클래스 확장
상속에 의한 클래스 확장은 기존 클래스를 상속 받아 새로운 클래스를 확장하여 정의하는 것이다.
extends
키워드상속을 통해 클래스를 확장할 때 사용하는 키워드이다. 수퍼클래스 (상속된 클래스, 베이스 클래스, 부모 클래스)와 서브클래스 (상속을 통해 확장된 클래스, 파생 클래스, 자식 클래스) 간의 상속 관계를 설정한다.
extends
키워드 다음에는 클래스뿐만이 아니라 함수 객체로 평가될 수 있는 모든 표현식을 사용할 수 있다. 이를 통해 동적으로 상속받을 대상을 결정할 수 있다. (extends
키워드)extends
키워드를 사용하여 확장할 수 있다.super
키워드super은 함수처럼 호출할 수도, 식별자처럼 참조할 수도 있는 키워드이다. 호출할 경우 '수퍼클래스의 constructor'을 호출하고, 참조할 경우 '수퍼클래스의 메서드'를 호출한다. (활용은 예제코드 참고)
📝 간단한 퀴즈
🧑🏻💻 연관 코드