프로토타입

»

프로토타입

JavaScript는 클래스라는 개념이 없습니다 그래서 기존의 객체를 복사하여(cloning) 새로운 객체를 생성하는 프로토타입 기반의 언어입니다

이렇게 생성된 객체 또한 또 다른 객체의 원형이 될 수 있습니다

그래서 프로토타입객체를 확장하고 객체 지향적인 프로그래밍을 할 수 있게 해줍니다

프로토타입은 크게 두가지로 해석됩니다

프로토타입 객체를 참조하는 prototype 속성객체 멤버인 proto 속성이 참조하는 숨은 링크가 있습니다

이 둘의 차이점을 이해하기 위해서는 JavaScript 함수와 객체의 내부적인 구조를 이해해야 합니다

함수와 객체의 내부 구조

JavaScript에서는 함수를 정의하고 파싱단계에 들어가게되면 내부적으로 수행되는 작업이 있습니다

함수 멤버로 prototype 속성이 있는데요 이 속성은 다른 곳에 생성된 함수이름의 프로토타입 객체를 참조합니다

프로토타입 객체의 멤버인 constructor 속성은 함수를 참조하는 내부구조를 가집니다

프로토타입 1

function Person() {}

프로토타입 객체란?

함수를 정의하면 다른 곳에 생성되는 프로토타입 객체는 자신이 다른 객체의 원형이 되는 객체입니다

모든 객체는 프로토타입 객체에 접근할 수 있습니다

또한 프로토타입 객체도 동적으로 런타임에 멤버를 추가할 수 있으며 같은 원형을 복사로 생성된 모든 객체는 추가된 멤버를 사용할 수 있습니다

프로토타입이란?

JavaScript에서 기본 데이터 타입을 제외한 모든 것이 객체입니다

객체가 만들어지기 위해서는 자신을 만드는데 사용된 원형인 포로토타입 객체를 이용하여 객체를 만듭니다

이때 만들어진 객체 안에 __proto__ 속성이 자신을 만들어낸 원형을 의미하는 프로토타입 객체를 참조하는 숨겨진 링크가 있습니다

이 숨겨진 링크를 프로토타입이라고 정의합니다

프로토타입 1

참조

JavaScript : 프로토타입(prototype) 이해