누가봐도 인생 1회차의 기록장

개발공부/JavaScript 책

코어 자바스크립트 #08 (클래스)

김놀먹 2021. 12. 9. 14:01

드디어 마지막 장까지 끝냈다!!

사실 뒤에 클래스 상속 부분이 더 있었지만

아직 개념이 안 잡혀서 그런지 예제 부분이 전혀 이해가 안 되길래

(책에서도 다 이해하려고 애쓰지 않아도 된다고 했음.. 아무튼 그랬음....)

지금은 과감히 스킵하기로 했다!

책 한 권 다 읽은 거 뿌-듯 :)

다음 책에서 모르는 내용 더 배우고 돌아와서 다시 읽을 때 수정해야지!


 

클래스와 인스턴스의 개념 이해

클래스Class : 공통 속성을 지닌 집단을 분류하기 위한 개념

인스턴스instance : 어떤 클래스의 속성을 지니는 구체적인 개체

현실의 개념과 다르게 프로그래밍 언어상 인스턴스는 어떤 인스턴스가 다양한 클래스에 속할 수는 있지만 이 클래스들은 모두 인스턴스 입장에서는 '직계존속'이다. 다중 상속을 지원하는 언어이든 그렇지 않은 언어이든 결국 인스턴스를 생성할 때 호출할 수 있는 클래스는 오직 하나뿐일 수밖에 없기 때문. (클래스가 먼저 정의되어야 함)

 

자바스크립트의 클래스

 생성자 함수 array를 new연산자와 함께 호출하면 인스턴스가 생성된다. 이때 array를 일종의 클래스라고 하면, array의 prototype 객체 내부 요소들이 인스턴스에 '상속'된다고 볼 수 있다. (엄밀히는 상복이 아닌 프로토타입 체이닝에 의한 참조) 한편 array 내부 프로퍼티들 중 prototype 프로퍼티를 제외한 나머지는 인스턴스에 상속되지 않는다. 

프로토타입에 클래스 개념을 적용
인스턴스에서 직접 접근 가능한지 여부

 

클래스의 prototype 내부에 정의된 메서드를 프로토타입 메서드라고 하며, 이들은 인스턴스가 마치 자신의 것처럼 호출할 수 있다. 한편 클래스(생성자 함수)에 직접 정의한 메서드를 스태틱 메서드라고 하며, 이들은 인스턴스가 직접 호출할 수 없고 클래스(생성자 함수)에 의해서만 호출할 수 있다.