JS의 class에 대하여

카테고리 없음 2023. 1. 27. 11:04

JS는 프로토타입 기반 프로그래밍 언어이다. 그러다보니 Java와 같이 일반적인 객체지향 언어에서 지원하는 객체지향을 다른 방식으로 제공한다. 어쨌든 상속이나 다형성, 캡슐화 등 객체지향을 위해 필요한 모든 것들을 구현할 수 있다.

JS는 class를 지원하는 것처럼 보인다. Java에서 class를 처음 배운 사람이라면 JS에서의 class는 언어의 난이도를 올리는 또 하나의 골칫덩이라고 할 수 있지만, 프로토타입을 이해하고 있다면 걱정하지 않아도 된다. 왜냐하면 JS의 class는 그냥 프로토타입일 뿐이니 괜히 다른 데에서 배운 class 개념을 가져 올 필요 없다. 아니, 오히려 가져 오면 더 헷갈린다. JS의 class는 프로토타입을 사용할 때 불필요하게 많이 작성해야 하는 텍스트의 양을 줄여주고 코드의 파편화 가능성을 줄여 가독성과 코드 관리의 용이성을 향상시켜 준다고 알고 있는게 속 편해지는 길이다.

이를테면, 프로토타입에 func라는 함수를 추가한다면 보통은 A.prototype.func = function() 라고 써야겠지만, 클래스 안에 이 함수를 정의한다면 func () {} 이면 끝이다. A.prototype 이 문구가 생각보다 프로그래밍 속도를 떨어뜨리는 요인으로 작용한다. 그래서 const a = A.prototype 으로 alias한 코드를 사용하곤 했는데 뭔가 마음에 안 들었다. 그리고 class를 사용하지 않으면 function A() {} 라는 생성자와 A.prototype 이라는 코딩 영역이 나뉘어져 보기가 상당히 불편하고, 이렇게 코딩 영역이 나뉘어져 코드가 흩어질 수 있다.

 

 

admin