프로토타입

Mooby·2023년 3월 15일
0

개념정리

목록 보기
5/12

자바스크립트는 클래스 기반 객체 지향 프로그래밍 언어와 달리 프로토타입 기반 객체 지향 프로그래밍 언어이다. 모든 객체들이 메서드와 속성들을 상속받기 위한 템플릿으로써 프로토타입 객체를 가진다는 뜻이다.

프로토타입 객체는 일반적으로 생성자 함수의 속성을 통해 정의된다. 프로토타입 객체에는 해당 클래스에서 공유할 속성과 메서드가 저장된다. 이 때, 프로토타입 객체는 모든 인스턴스에서 공유된다. 즉, 인스턴스에서 해당 속성이나 메서드를 호출하면, 자바스크립트 엔진은 해당 인스턴스의 프로토타입 객체에서 속성이나 메서드를 찾는다.

모든 객체는 내부적으로 __proto__ 속성을 가지고 있으며, 이 속성은 해당 객체의 프로토타입 객체를 가리킨다.

.prototype은 생성자 함수에서 사용하는 속성이다. 생성자 함수를 사용하여 객체를 생성할 때, 해당 생성자 함수의 prototype 속성을 상속받은 프로토타입 객체를 생성하고, 이 프로토타입 객체는 인스턴스가 사용할 수 있는 속성과 메서드를 정의한다.
예를 들어, Person 생성자 함수의 prototype 속성에 name과 age를 정의하면, Person 생성자 함수로 생성된 인스턴스는 해당 프로토타입 객체에서 name과 age 속성을 상속받을 수 있다.

클래스를 이용하면 생성자 함수와 프로토타입 객체를 한 번에 정의할 수 있는 이점이 있다. 클래스에서는 constructor 메서드에서 객체의 초기화를 수행하며, 클래스 내부에서 정의된 메서드들은 해당 클래스의 프로토타입 객체에 정의된다.

정리하면, 클래스를 정의할 때 프로토타입 객체가 생성되며, 클래스 내부에 속성과 메서드를 정의하면 이들은 프로토타입 객체에 추가된다. 그리고 인스턴스가 생성될 때, 인스턴스는 이 프로토타입 객체의 속성과 메서드를 상속받는다.

profile
코린이

0개의 댓글