Language/JavaScript

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

SambaLim 2019. 5. 24. 23:26

자바스크립트는 프로토타입에 기반한 언어입니다.

프로토타입 기반 프로그래밍에서는 Java의 Class처럼 프로토타입을 사용합니다. 하지만 Java에서 Class를 기반으로 인스턴스를 생성하여 객체를 사용하는 것과 다르게 JS에서는 프로토타입을 토대로 클로닝(Clonning)과 객체특성을 확장해나가는 방식으로 새로운 객체를 생성하여 사용합니다.

자바스크립트의 프로토타입은 크게 Prototype ObjectPrototype Link로 나뉩니다.

Project Object

function hello() {}
var helloObject = new hello();

자바스크립트에서 객체는 함수로 생성합니다. helloObjecthello라는 함수로 생성한 객체입니다.

우선 함수가 정의될 때, 일어나는 일을 알아야합니다.

  1. 함수에 Constructor 자격 부여
  2. 함수의 Prototype Object 생성 및 연결

Constructor 자격 부여

위의 예제와 같이 hello함수를 정의하였을 때, hello함수는 Constructor(생성자) 자격을 부여받습니다. 따라서 new라는 키워드를 사용할 수 있습니다.

Prototype Object 생성

함수를 정의하면 함수만 생성되는 것이 아니라 Prototype Object도 같이 생성됩니다. Prototype Object는 자신을 원형으로 만들어질 객체가 참조할 Prototype이 됩니다.

Prototype Object는 기본적인 속성으로 constuctor와, __proto__를 가지고 있습니다. 이는 Chrome 개발자 도구에서 쉽게 확인하실 수 있습니다.

Prototype Link

Prototype Object의 기본적인 속성 중 __proto__가 자신의 ProtoType Object를 따라갈 수 있는 열쇠가 됩니다.

function hello() {}
var helloObject = new hello();

hello함수의 __proto__hello함수의 Prototype Object가 될 것이고, helloObject__proto__또한 hello함수의 Prototype Object가 될 것입니다.

'Language > JavaScript' 카테고리의 다른 글

자바스크립트 고차함수  (0) 2019.08.27
자바스크립트 클로저  (0) 2019.08.08
자바스크립트 스코프  (0) 2019.08.03
자바스크립트 일급함수  (0) 2019.08.02
2019년의 JavaScript ES2019 예상  (0) 2019.01.27