2016-01-10

[ECMAScript 6] class 선언하기

 JavaScript는 훌륭한 객체 지향 언어다. 하지만 프로토타입 기반 객체지향이라는 독특한 개념과 특유의 verbose한 문법 때문에 다른 언어에서 넘어온 사람들은 쉽게 적응하지 못하였고, 객체 지향스럽지 않은 코드를 작성하였다. 그럼에도 프로토타입은 다른 객체 지향 언어가 제공하는 class에 비해서 더 유연한 확장성 지원하기 때문에 많은 JavaScript 개발자들은 class가 필요 없다는 입장을 고수해왔다.
 하지만 프로토타입이 코드를 verbose 하게 만들고, 가독성을 떨어뜨린다는 주장은 꾸준히 제기되었고, 결국 ECMAScript 6에 드디어 class 키워드가 추가되어 보다 쉽게 객체 지향적 코드를 작성할 수 있게 되었다.  여기서 중요한 것은 class 키워드가 ES6에 추가되었다고 해서 클래스 기반 객체지향이라는 개념이 추가된 것은 아니라는 것이다. ES6도 여전히 프로토타입 기반의 객체 지향 언어이다. class는 프로토타입 기반 객체를 만드는 syntactic sugar일 뿐이다. 즉, 위와 같은 코드는 ES5를 기준으로 보면 아래와 같이 해석된다.1) class 스타일의 간결성과 prototype의 유연성을 동시에 갖기 위한 선택이었다.
1) 완전히 일치하는 것은 아니다. ES5에는 생성자로 쓸 수 없는 함수가 존재하지 않기 때문에 method를 완벽히 재현할 수 없다.

댓글 없음:

댓글 쓰기