프로토타입

yeseul kim·2021년 10월 14일

자바스크립트는 명령형imperative, 함수형functional, 프로토타입 기반 prototyp-based 객체지향 프로그래밍OOP을 지원하는 멀티 패러다임 프로그래밍 언어다.

자바스크립트는 객체 기반의 프로그래밍 언어이며 자바스크립트를 이루고 있는 거의 "모든 것"이 객체다. 원시 타입의 값을 제외한 나머지 값들(함수, 배열, 정규 표현식 등)은 모두 객체다.

객체지향 프로그래밍

프로그램을 여러 개의 독립적인 단위, 즉 객체object의 집합으로 표현하려는 프로그래밍 패러다임.

다양한 속성 중에서 프로그램에 필요한 속성만 간추려 내어 표현하는 것을 추상화abstraction라 한다.

프로그래머(subject, 주체)는 속성 attribute/property으로 표현된 객체를 다른 객체와 구별하여 인식할 수 있다.

객체는 상태state를 나타내는 데이터 (property)와 상태 데이터를 조작할 수 있는 동작behavior(method)을 하나의 논리적인 단위로 묶은 복합적인 자료구조다.

객체는 고유의 기능을 갖는 독립적인 부품이면서 다른 객체와 관계성relationship을 가질 수 있다. 다른 객체와 메세지를 주고받거나 데이터를 처리할 수도 있다. 또는 다른 객체의 상태 데이터나 동작을 상속받아 사용하기도 한다.

상속과 프로토타입

상속inheritance은 객체지향 프로그래밍의 핵심 개념으로, 어떤 객체의 프로퍼티 또는 메서드를 다른 객체가 상속받아 그대로 사용할 수 있는 것을 말한다.

자바스크립트는 프로토타입을 기반으로 상속을 구현하여 불필요한 중복을 제거한다. 상속은 코드의 재사용이란 관점에서 매우 유용하다.

생성자 함수는 동일한 프로퍼티 구조를 갖는 객체를 여러 개 생성할 때 유용하다. 하지만 생성자 함수는 인스턴스를 생성할 때마다 메서드를 중복 생성한다. 이는 메모리를 불필요하게 낭비하는 일이며 퍼포먼스에도 악영향을 준다.

프로토타입을 기반으로한 상속을 통해 불필요한 중복을 제거할 수 있다. 각 객체의 상태를 나타내는 프로퍼티만 개별적으로 소유하고 내용이 동일한 메서드는 상속을 통해 공유하여 사용할 수 있다.

프로토타입 객체

프로토타입은 어떤 객체의 상위(부모) 객체의 역할을 하는 객체로서 다른 객체에 공유 프로퍼티를 제공한다.

profile
hello, world

0개의 댓글