Study/JavaScript

[JavaScript] Prototype 이해하기

2022. 1. 12. 13:49

Prototype

자바스크립트에는 클래스라는 개념이 없다. 대신 프로토타입 이라는 것이 존재하는데, 이것이 자바스크립트가 프로토타입 기반 언어라고 불리는 이유다. 클래스가 없으니 상속기능도 없다. 그래서 프로토타입을 기반으로 상속을 구현해서 사용하기도 한다. 최근 ECMA6에서 Class 문법이 추가되긴 했지만, 이것이 자바스크립트가 클래스 기반으로 바뀐것은 아니다.

function Person() {}

Person.prototype.eyes = 2;
Persion.prototype.nose = 1;

var kim = new Person();
var park = new Person();

console.log(kim.eyes); // 2

Persion.prototype이라는 빈 Object가 어딘가에 존재하고, Person 함수로부터 생성된 객체(kim, park)들은 어딘가 존재하는 Object에 들어있는 값을 모두 가져다 쓸 수 있다.

 

Prototype Object

객체는 언제나 함수(Function)으로 생성된다.

function Persion() {} // 함수

var personObject = new Persion(); // 함수로 객체를 생성
var obj = {};
var obj = new Object(); 
// 두 코드는 사실 같다. 여기서 Object()는 자바스크립트에서 기본으로 제공하는 함수이다.
// Function, Array도 모두 함수로 정의되어 있다.

함수로 정의 될 때는 2가지 일이 동시에 이루어진다.

  1. 해당 함수에 Constructor(생성자)자격 부여

Constructor 자격이 부여되면 new를 통해 객체를 만들어 낼 수 있다.

  1. 해당 함수의 Prototype Object 생성 및 연결

함수를 정의하면 함수만 생성되는 것이 아니라 Prototype Object도 같이 생성된다.

 

 

참고 :: https://medium.com/@bluesh55/javascript-prototype-이해하기-f8e67c286b67