[JavaScript] prototype

예진·2023년 3월 16일

JavaScript

목록 보기
10/13
post-thumbnail

상속(inheritance)

상속(inheritance)이란 자식 클래스에서 부모 클래스의 모든 프로퍼티와 메소드를 사용할 수 있는 것을 의미한다.

자바스크립트는 프로토타입 기반(prototype-based)의 객체 지향 언어로, 자바스크립트에서는 현재 존재하고 있는 객체를 프로토타입으로 사용하여, 해당 객체를 복제하여 재사용하는 것을 상속이라고 한다.

프로토타입(prototype)

자바스크립트의 모든 객체는 자신의 부모 역할을 하는 객체와 연결되어있다.
모든 객체는 그들의 부모 객체로부터 프로퍼티와 메소드를 상속받는다. 이때 상속되는 정보를 제공하는 객체(부모객체)를 프로토타입 객체 또는 프로토타입이라고 합니다.

prototype 프로퍼티와 __proto__ 프로퍼티

  • prototype 프로퍼티
    함수 객체가 생성자로 사용될 때, 이 함수를 통해 생성될 객체의 부모 역할을 하는 객체(Prototype 객체)를 가리킨다.
    즉, Prototype 객체란 어떠한 객체가 만들어지기 위해 그 객체의 모태가 되는 객체이고 하위 객체들에게 물려줄 속성들이다.

  • __proto__ 프로퍼티
    __proto__를 이용하면 부모 클래스의 프로토타입, 혹은 '부모의 부모 클래스'의 프로토타입을 탐색할 수 있다.

let animal = {
  eats: true
};
 
function Rabbit(name) {
  this.name = name;
}
 
Rabbit.prototype = animal;
 
let rabbit = new Rabbit("White Rabbit"); //  rabbit.__proto__ == animal
 
alert( rabbit.eats ); // true

프로토타입 체인(prototype chain)

자바스크립트는 특정 객체의 프로퍼티나 메소드에 접근시 객체 자신의 것뿐 아니라 __proto__가 가리키는 링크를 따라서 자신의 부모 역할을 하는 프로토타입의 프로퍼티나 메소드를 접근할 수 있다.

Object.prototype 객체는 어떠한 프로토타입도 가지지 않으며, 아무런 프로퍼티도 상속받지 않는다.
Object.prototype 객체는 프로토타입 체인에서도 가장 상위에 존재하는 프로토타입이다.
따라서 자바스크립트의 모든 객체는 Object.prototype 객체를 프로토타입으로 상속받습니다.

profile
Front-End Developer

0개의 댓글