클래스ES6 버전부터 신규로 추가된 객체 설계 문법. Prototype이 발전된 형태로 보면 된다. Show 객체 (Object)
객체를 구성하는 단위
클래스 (Class)객체의 설계도 역할을 하는 프로그램 소스 공장에서 하나의 설계도를 사용하여 여러 개의 제품을 생산할 수 있는 것처럼 하나의 클래스를 통해 동일한 구조를 갖는 객체를 여러 개 생성할 수 있다. 1) 클래스의 가장 기본적인 코드 형식클래스 이름은 명사들의 조합으로 이루어지며 첫 글자는 대문자로 지정하는 것이 관례이다.
2) 클래스를 통한 객체 생성하기
일반적으로 JS에서의 객체 선언은 const 키워드를 사용함. 위와 같이 정의하면 변수는 클래스 안에 정의된 모든 기능을 부여받은 특수한 형태의 변수가 되는데 이를 객체라고 하고, 객체는 자신에게 기능을 점(.)을 통해 접근할 수 있다.
3) 클래스의 작성 패턴
객체라는 개념은 배열이 같은 종류의 변수들만 그룹화 하는 한계를 벗어나 서로 다른 종류의 변수를 그룹화 하는데서 출발한다. (이 상태를 C언어의 구조체라고 한다.) 그렇게 그룹화 해 놓은 변수들간의 관계를 구현하기 위해 메서드를 함께 포함하는 형태로 발전된 것이다. 변수만 정의한 클래스생성자 함수를 정의하고 생성자 함수 안에서 this키워드를 통해 객체 안에 탑제될 변수값들을 생성한다. 생성자 함수는 constructor로 이름이 미리 약속되어져 있다.
JSON 형식의 객체와 차이class나 prototype을 통해 new로 생성된 객체는 구조는 동일하지만 각각 독립적인 값을 갖는다.
JSON으로 생성되는 객체는 싱글톤으로서 존재하므로 단순 복사만으로는 동일한 형식을 갖는 두 개의 데이터를 생성할 수 없다.
5) 메서드만 정의한 클래스용도나 목적이 같은 메서드들을 별도의 클래스로 묶어둔다.
6) 메서드와 멤버변수를 함께 갖는 클래스멤버변수의 스코프는 클래스 내의 모든 메서드에서 식별 가능하다. 결국 멤버변수는 모든 메서드가 공유하는 전역 변수의 개념이 된다.
7) getter, setter객체를 통한
멤버변수로의 직접 접근이 소스코드 보안에 좋지 않기 때문에 멤버변수에 대한 직접 접근을 제한하려는 목적으로(혹은 getter, setter 이름과 구분을 위한 목적으로) 멤버변수의 이름을 언더바( 그 후에 멤버변수에 대한 간접적인 할당, 반환을 수행하는 메서드를 별도로 만드는 형태를 getter, setter라고 한다.
#02. 클래스 상속어떤 클래스의 기능을 다른 클래스에 상속시킨 후 추가적인 기능을 명시하여 원래의 기능을 확장하는 방법 1) 기능의 확장으로서의 상속
2) 여러 클래스간의 공통 기능을 모아 놓는 의미로서의 상속여러 개의 클래스가 포함하는 기능 중 일부가 동일한 경우 각 클래스로부터 공통되는 부분을 독립적인 클래스로 추출하고 그 클래스를 상속하여 공유하는 처리 기법 공통기능을 정의하는 부모 클래스
부모를 상속 받는 자식 클래스(들) 정의
자식 클래스에 대한 객체 생성부모가 생성자 파라미터를 통해 초기화를 수행하고 있다면 그 생성자는 자식 클래스에게도 상속된다. 그러므로 자식 클래스를 통한 객체 생성시에도 부모가 요구하는 생성자 파라미터를 전달해야 한다.
|