자바스크립트는 클래스가 존재하지 않는 프로토타입 기반의 언어로, 이와 같이 클래스가 없는 프로토타입 언어에서 분류와 인스턴스화는 프로토타입이라는 객체의 복사를 통해 이뤄진다.
프로토타입 기반 프로그래밍은 객체지향 프로그래밍의 한 형태의 갈래로 클래스가 없고, 클래스 기반 언어에서 상속을 사용하는 것과 다르게, 객체를 원형(프로토타입)으로 하여 복제의 과정을 통하여 객체의 동작 방식을 다시 사용할 수 있다.
상속 관점에서 자바스크립트의 유일한 생성자는 객체뿐이다. 각각의 객체는 __prototype__이라는 private 속성을 가지는데 자신의 프로토타입이 되는 다른 객체를 가리킨다. 그 객체의 프로토타입 또한 프로토타입을 가지고 있고 이것이 반복되다, 결국 null을 프로토타입으로 가지는 오브젝트에서 끝난다. null은 더 이상의 프로토타입이 없다고 정의되며, 프로토타입 체인의 종점 역할을 한다.
자바스크립트 객체는 속성을 저장하는 동적인 "가방"과(자기만의 속성) 프로토타입 객체에 대한 링크를 가진다. 객체의 어떤 속성에 접근하려 할 때 그 객체 자체 속성뿐만 아니라 객체의 프로토타입, 그 프로토타입의 프로토타입 등 프로토타입 체인의 종단에 이를 때까지 그 속성을 탐색한다. 객체의 속성에 값을 지정하면 "자기만의 속성"이 생긴다.
자바스크립트는 객체의 속성으로 함수를 지정할 수 있고 속성 값을 사용하듯 쓸 수 있다. 속성 값으로 지정한 함수의 상속 역시 속성의 상속과 동일하다. 상속된 함수가 실행될 때, this라는 변수는 상속된 오브젝트를 가리킨다. 함수는 속성을 가질 수 있고, 모든 함수에는 prototype이라는 특수한 속성이 있다.
따라서 정리하자면 다음과 같다.
1. 프로토타입 기반 언어인 자바스크립트의 객체는 원형으로부터 생성된다.
2. 생성된 객체는 프로토타입 링크(__proto__)를 통해 원형을 참조한다.
3. 객체들 사이에 형성된 일련의 링크(프로토타입 링크)를 프로토타입 체인이라고 한다.
4. Object.create 함수를 이용하면, 프로토타입 언어의 특징을 살린 프로토타입 체인을 쉽게 구현할 수 있다.
프로토타입 기반 프로그래밍 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 프로토타입 기반 프로그래밍은 객체지향 프로그래밍의 한 형태의 갈래로 클래스가 없고, 클래스 기반 언어에서 상속을 사용하는 것과는 다르게, 객체를 원형(
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
'컴퓨터과학 > 용어사전' 카테고리의 다른 글
객체 기반의 스크립트 프로그래밍 언어, 자바스크립트(JavaScript) (0) | 2023.02.10 |
---|---|
목 객체(mock object) (0) | 2023.01.29 |
스텁(Stub) (0) | 2023.01.29 |