JavaScript Class
자바스크립트에서 클래스란 생성자 함수다. 함수가 특정 기능을 하는 구문(알고리즘, 로직)을 묶을 때 사용하는 문법이라면, 클래스는 이렇게 만들어진 수많은 변수와 함수 중 연관 있는 변수와 함수만을 선별해 포장하는 기술이다. 이렇게 클래스로 포장하는 이유는 객체 단위로 코드를 그룹화할 수 있으며 코드를 재사용하기 때문이다.
클래스로 포장하는 이유
객체 단위로 코드 그룹화 및 코드 재사용성을 사용하기 위함이다. 함수와 비교해서 설명하면 다음과 같이 비교할 수 있다.
1) 함수기반 단위
특정 기능을 하는 변수, 구문(알고리즘) 등을 감싸는 것이다.
기능 : 기능 단위의 코드 그룹화, 기능 단위의 중복 코드 제거 및 코드 재사용성
2) 클래스기반 단위
연관 있는 변수와 함수를 감싸는 것이다.
기능 : 객체 단위의 변수와 함수, 객체 단위의 중복 코드 제거 및 코드 재사용성
다시 말해 UI로 슬라이더가 있는 경우 로직을 짤 때 슬라이더의 경우 indicate 기능, next, prev 버튼 등의 여러 기능들이 있을 경우 대개는 함수 기반 단위의 코딩은 슬라이더의 필요한 기능들을 각각 로직으로 구현하는데 이런 방식으로 구현하게 되면 전역 스코프도 오염될뿐더러 소스 가독성도 떨어지며 그로 인한 유지보수도 힘들어진다.
하지만 클래스 단위로 코딩을 하게 되면 슬라이더에 대한 기능들을 모두 그룹화하여 관리할 수 있게 된다. 그래서 클래스의 대표적인 기능으로 연관 있는 변수와 함수를 그룹화할 수 있다.
함수를 그룹화한다는 것이 중요하다. 이렇게 클래스를 사용함으로써 얻는 이점은 객체 단위의 중복 코드를 제거할 수 있으며 코드 재사용성이 좋아진다.
클래스(생성자)와 일반함수 비교
클래스(생성자함수) | 일반 함수 | |
포장 내용 | 연관있는 변수와 함수 | 특정기능을 하는 변수 + 구문 |
기능 | 객체 단위의 코드를 그룹화 객체 단위의 중복 코드 제거 및 코드의 재사용성 |
기능 단위의 코드를 그룹화 기능 단위의 중복 코드 제거 및 코드의 재사용성 |
자바스크립트에서 클래스를 만드는 방법
사실 자바스크립트는 객체지향 프로그래밍 언어에서 기본적으로 제공하는 클래스라는 개념을 제공하지 않는다. 생성자 함수가 다른 언어에서의 클래스(class)와 유사한 개념이기 때문에 클래스를 사용할 수 있는 방법이 있다. 그렇기 때문에 자바스크립트에서 클래스는 없지만 OOP와 같이 비슷하게 사용할 수 있는 문법이 존재한다.
자바스크립트에서 클래스를 만드는 방법
- 리터럴 방식
- 함수 방식
- 프로토타입 방식
리터럴 방식의 클래스
var 인스턴스 = {
프로퍼티1 : 초기값,
프로퍼티2 : 초기값,
메서드1 : function() {
},
메서드2 : function() {
}
}
함수 방식의 클래스
function 클래스이름(){
this.프로퍼티1 = 초기값1;
this.프로퍼티2 = 초기값2;
this.메서드1 = function(){
}
this.메서드2 = function(){
}
}
var 인스턴스 = new 클래스이름();
프로토타입 방식의 클래스
function 클래스이름(){
this.프로퍼티1 = 초기값;
this.프로퍼티2 = 초기값;
}
클래스이름.prototype.메서드1 = function(){
}
클래스이름.prototype.메서드2 = function(){
}
세 가지 패턴마다 장,단점이 존재하기 때문에 상항에 맞게 선택적으로 사용해야 한다. 예를 들면 함수 방식의 클래스는 인스턴스를 생성할 때마다 내부의 모든 메서드가 독립적으로 만들어진다. 즉, 인스턴스마다 중복 변수와 중복 메서드들이 생성된다.
인스턴스(instance)
일반적인 함수의 경우는 함수를 선언한 후 함수를 호출해줘야 동작하듯 클래스의 경우는 클래스 인스턴스를 생성해야만 클래스에 들어 있는 함수들의 내부 기능들을 사용할 수 있다. 클래스는 설계도, 인스턴스는 실체다.
인스턴스 생성방법
var 인스턴스 = new 클래스이름(); //new 키워드를 사용
객체(Object)
객체는 인스턴스의 또 다른 이름이고, 상황에 따라 인스턴스 또는 객체로 부른다. 인스턴스는 주로 new 연산자를 이용하여 클래스의 실체를 생성할 때 사용하고 이외에 클래스에서 제공하는 프로퍼티와 메서드를 사용한다고 했을 때의 경우를 객체라고 말한다.
그리고 프로퍼티는 클래스 내부에 만드는 변수를 프로퍼티라고 부르며 멤버 변수라고도 한다. 메서드는 클래스에 만드는 함수들을 메서드라고 부르며 멤버 함수라고도 부른다. 메서드는 주로 객체의 프로퍼티 값을 변경하거나 알아내는 기능과 클래스를 대표하는 기능이 담기게 된다.
'스마트팩토리 > JS' 카테고리의 다른 글
프로토타입 기반 프로그래밍 (0) | 2020.09.03 |
---|---|
자바 스크립트 객체지향 프로그래밍 (0) | 2020.09.03 |