자바스크립트 프로토타입이란?

2020. 10. 30. 21:23·개발/JavaScript

프로토타입이란?

프로토타입(prototype)은 프로토타입 객체의 줄임말로 자바스크립트에서 상속을 구현하는 방식입니다. 모든 객체에는 하나의 프로토타입이 존재하며, 이는 모두 생성자 함수와 연결되어 있습니다. 프로토타입을 통해 자식 객체는 부모 객체의 프로퍼티를 자유롭게 사용할 수 있습니다.

function Person (name) {
    this.name = name;
}

Person.prototype.age = 31;

const person = new Person("Hwi");

console.log(person.age); // 31

프로토타입 체인

자바스크립트는 객체의 프로퍼티에 접근했으나 해당 프로퍼티가 존재하지 않는다면, 해당 객체의 부모 역할을 하는 프로토타입의 프로퍼티를 탐색합니다. 이러한 계층 구조적 메커니즘을 프로토타입 체인이라 합니다.

 

자식 객체가 특정한 프로퍼티를 이미 갖고 있는 경우 부모 객체의 프로퍼티가 아닌 자신의 프로퍼티를 사용합니다.

function Person (name, age) {
    this.name = name;
  this.age = age;
}

Person.prototype.age = 31;

const person = new Person("Hwi", 20);

console.log(person.age); // 20

constructor를 통한 생성자 함수 확인

모든 프로토타입은 contructor 프로퍼티를 갖습니다. (constructor는 참조하고 있는 생성한 생성자 함수를 가리킵니다.)

function Person (name) {
    this.name = name;
}

const me = new Person("Hwi")

console.log(me.constructor === Person); // true

 

객체, 함수, 배열, 정규 표현식 리터럴은 Object, Function, Array, RegExp와 같은 생성자 함수를 통해 생성되며, constructor를 통해 이를 확인할 수 있습니다.

const obj {};
console.log(obj.constructor === Object) // true

function foo() {}
console.log(foo.constructor === Function); // true

const arr [];
console.log(arr.constructor === Array) // true

마치며

프로토타입은 자바스크립트에서 상속을 구현하는 방식입니다. 상속을 통해 한 객체의 프로퍼티와 메소드를 다른 객체가 사용할 수 있게 되며, 이는 객체 지향 프로그래밍의 핵심입니다.

'개발 > JavaScript' 카테고리의 다른 글

자바스크립트 타이머 setTimeout / setInterval 설명  (0) 2020.11.07
객체 지향 프로그래밍이란?  (0) 2020.10.29
자바스크립트 call, apply, bind 설명  (0) 2020.10.27
'개발/JavaScript' 카테고리의 다른 글
  • 자바스크립트 엄격 모드 "use strict" 차이점 설명
  • 자바스크립트 타이머 setTimeout / setInterval 설명
  • 객체 지향 프로그래밍이란?
  • 자바스크립트 call, apply, bind 설명
휘Hwi
휘Hwi
여행, 사진, 개발, 책 이야기를 기록하는 여행자 휘의 블로그 𓂍
  • 휘Hwi
    휘: 끝나지 않은 이야기
    휘Hwi
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 기록
        • 일상 에세이
        • 인사이트
        • 투자와 재테크
        • 코인 이야기
        • 아카이빙
        • 집무실 레터
        • 사랑에 대하여
        • 번역 이야기(完)
        • 프리랜서 일지(完)
      • 여행
        • 🌎 세계 여행기 S1 (完)
        • 🌊 삼삼한 여행기 (完)
        • 🚶 온더로드
        • 🇯🇵 일본
        • 🏝️ 발리
        • 🇻🇳 베트남
        • 🇱🇰 스리랑카
        • 🇮🇳 인도
        • 🇹🇭 태국
        • 🇸🇬 싱가포르
        • 🇦🇺 호주
        • 🇭🇰 홍콩
        • 🇰🇷 한국
        • 🍚 여행자의 한 끼
        • ℹ️ 여행 정보
      • 사진
        • 사진가
        • 사진 이론과 생각
        • 사진 관련 정보
      • 영상
        • 파이널컷 모션 공부
        • 고프로 GoPro
        • 영상 관련 정보
      • 책
        • 책 읽고 쓰기
      • 개발 N
        • 티스토리
        • Internet
        • HTML
        • CSS
        • JavaScript
        • Typescript
        • React
        • Node.js
        • Express
        • NestJS
        • Python
        • Django
        • MySQL
        • MongoDB
        • AWS
        • Deployment
        • Terminal
        • Git N
        • Glossaries
        • Articles
        • Projects
        • TIL;
      • 미분류
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
휘Hwi
자바스크립트 프로토타입이란?
상단으로

티스토리툴바