본문으로 바로가기

프로토타입 기반 프로그래밍

자바스크립트를 객체지향적인 언어라고 말할 수 있는 가장 중요한 이유 중 하나는 프로토타입 상속(prototypal inheritance) 이라는 확장과 재사용을 가능하게 해주기 때문입니다. 



프로토타입 기반 프로그래밍은 객체의 원형인 프로토타입을 이용하여 새로운 객체를 만들어내는 프로그래밍 기법입니다. 이렇게 새롭게 만들어진 객체 역시 자기자신의 프로토타입을 가지고 있으며 이 새로운 객체의 원형을 이용하면 또 다른 새로운 객체를 만들어 낼 수도 있으며 이런 방식,구조로 객체를 확장하는 방식을 프로토타입 기반의 프로그래밍 언어라고 말합니다.


자바스크립트에서 사용되는 프로토타입이란 용어는 크게 두가지로 나누어지고 있기 때문에 이 두가지를 구분하는 것이 중요합니다.


프로토타입 프로퍼티(Prototype Property)가 가리키고 있는 프로토타입 객체(Prototype Object)와 자기 자신을 만들어낸 객체의 원형을 의미하는 프로토타입 링크(Prototype Link)로 나뉘어 집니다. 


그리고 ECMAScript에서는 이러한 프로토타입 링크를 암묵적 프로토타입 링크(implicit prototype link)라고 부릅니다.



자바스크립트의 프로토타입(Prototype)

자바스크립트의 모든 객체는 자기 자신을 생성한 객체 원형에 대한 숨겨진 연결고리를 가지고 있습니다. 이때 자기 자신을 생성하기 위해서 사용된 객체의 원형을 프로토타입이라고 합니다. 

그리고 자바스크립트의 모든 객체는 Object 객체의 프로토타입을 기반으로 하여 확장되었기 때문에 이 연결고리의 끝은  Object 객체의 프로토타입 Object 입니다.


프로토타입이란 사전적 의미가 원본,원형으로써 프로그래밍 언어에서 프로토타입이란 의미도 크게 다르지 않습니다.

다시 말해, 어떠한 객체가 만들어지기 위해 그 객체의 부모(모태)가 되는 녀석을 프로토타입이라고 합니다.


Java, C++ 과 같은 언어에서 Class 가 바로 자바스크립트의 프로토타입과 동일한 의미로 해석될 수 있습니다.



Jaehee's WebClub