자바스크립트는 어떻게 '객체지향' 이라고 하는 프로그래밍 패러다임에 접근하고 있는가?
자바스크립트는 어떠한 객체지향 언어와도 같지 않다. 자바스크립트는 본인만의 독특한 성격을 가지고 있다.
자바스크립트 계열에 속하는 언어의 계열들은 객체지향 프로그래밍이 아닌, prototype-based programming
이라고 불린다. 즉 프로토타입 기반의 프로그래밍언어라는 뜻이며, 자바스크립트는 이에 속한다.
그렇기에, 자바스크립트의 객체라는 개념은, 전통적인 함수형언어의 특성을 그대로 갖고 있는 것이 아니고, 객체지향 언어의 문법을 비슷하게 사용하면서 , 사실은 함수형의 특성을 갖고있는 특이한 특성을 가지고 있다.
기존의 객체지향의 패러다임에 익숙하다면, 자바스크립트의 객체 개념을 이해하는 게 조금 헷갈릴 수 있다.
자바스크립트가 추구하는 프로그래밍 스타일은 대단히 자유롭고 유연함이다.
자바나 C++같은 언어들이 추구하는 객체 지향이 규제를 통해 버그의 가능성을 최소화하고, 거대한 소프트트웨어를 만들기 위한 다양한 관리 도구들을 아주 엄격하고 깐깐하게 도입한 언어라 한다면, 자바스크립트는 마치 예술과 같은 느낌(?)이다.
이런 부분들이 자바스크립트의 미덕이지만, 이 미덕에 익숙해지기 전까지는 대단히 혼란스럽고 엉성하게도 느껴질 수 있다.
하지만, 자바스크립트는 자기 나름대로의 추구가 있었고, 그렇기에 지금까지도 많은 사람들이 사용하는 언어로 자리잡고 있다.
객체지향 프로그래밍을 간단하게 얘기하자면, 서로 연관되어있는 변수와 서로 연관되어있는 메소드를 하나의 객체라고 하는 그릇에 담아 관리하는 것이다. 즉 연관되어있는 것을 카테고라이징하는 기능을 제공하는 문법적인 체계가 객체이다.
객체지향 프로그래밍을 통해 얻고자 하는 것은, 좋은 부품
을 생성해내는 것이다.
그러나 좋은 부품을 만들어내기가 쉽지는 않다.