본문 바로가기

컴퓨터과학/용어사전

프로토타입 기반의 언어, 자바스크립트(JavaScript)

728x90
반응형

자바스크립트는 클래스가 존재하지 않는 프로토타입 기반의 언어로, 이와 같이 클래스가 없는 프로토타입 언어에서 분류와 인스턴스화는 프로토타입이라는 객체의 복사를 통해 이뤄진다.

 

프로토타입 기반 프로그래밍은 객체지향 프로그래밍의 한 형태의 갈래로 클래스가 없고, 클래스 기반 언어에서 상속을 사용하는 것과 다르게, 객체를 원형(프로토타입)으로 하여 복제의 과정을 통하여 객체의 동작 방식을 다시 사용할 수 있다.

 

상속 관점에서 자바스크립트의 유일한 생성자는 객체뿐이다. 각각의 객체는 __prototype__이라는 private 속성을 가지는데 자신의 프로토타입이 되는 다른 객체를 가리킨다. 그 객체의 프로토타입 또한 프로토타입을 가지고 있고 이것이 반복되다, 결국 null을 프로토타입으로 가지는 오브젝트에서 끝난다. null은 더 이상의 프로토타입이 없다고 정의되며, 프로토타입 체인의 종점 역할을 한다.

 

자바스크립트 객체는 속성을 저장하는 동적인 "가방"과(자기만의 속성) 프로토타입 객체에 대한 링크를 가진다. 객체의 어떤 속성에 접근하려 할 때 그 객체 자체 속성뿐만 아니라 객체의 프로토타입, 그 프로토타입의 프로토타입 등 프로토타입 체인의 종단에 이를 때까지 그 속성을 탐색한다. 객체의 속성에 값을 지정하면 "자기만의 속성"이 생긴다.

 

자바스크립트는 객체의 속성으로 함수를 지정할 수 있고 속성 값을 사용하듯 쓸 수 있다. 속성 값으로 지정한 함수의 상속 역시 속성의 상속과 동일하다. 상속된 함수가 실행될 때, this라는 변수는 상속된 오브젝트를 가리킨다. 함수는 속성을 가질 수 있고, 모든 함수에는 prototype이라는 특수한 속성이 있다.

 

따라서 정리하자면 다음과 같다.

1. 프로토타입 기반 언어인 자바스크립트의 객체는 원형으로부터 생성된다.

2. 생성된 객체는 프로토타입 링크(__proto__)를 통해 원형을 참조한다.

3. 객체들 사이에 형성된 일련의 링크(프로토타입 링크)를 프로토타입 체인이라고 한다.

4. Object.create 함수를 이용하면, 프로토타입 언어의 특징을 살린 프로토타입 체인을 쉽게 구현할 수 있다.

 

https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85_%EA%B8%B0%EB%B0%98_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

프로토타입 기반 프로그래밍 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 프로토타입 기반 프로그래밍은 객체지향 프로그래밍의 한 형태의 갈래로 클래스가 없고, 클래스 기반 언어에서 상속을 사용하는 것과는 다르게, 객체를 원형(

ko.wikipedia.org

https://developer.mozilla.org/ko/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

 

상속과 프로토타입 - JavaScript | MDN

Java 나 C++ 같이 클래스 기반의 언어를 사용하던 프로그래머는 자바스크립트가 동적인 언어라는 점과 클래스가 없다는 것에서 혼란스러워 한다. (ES2015부터 class 키워드를 지원하기 시작했으나,

developer.mozilla.org

https://ui.toast.com/weekly-pick/ko_20160603

 

프로토타입 기반 언어, 자바스크립트

자바스크립트는 원형 객체로 새로운 객체를 생성하는 프로토타입(원형) 기반 언어다. 프로토타입 기반 언어란 무엇일까? 자바스크립트로 프로토타입 언어의 특징을 어떻게 구현할까? 이전에 접

ui.toast.com

 

728x90
반응형