[JavaScript] prototype

이든·2023년 1월 5일
0

[JavaScript]

목록 보기
4/5

Java, C++과 같은 클래스 기반 객체지향 프로그래밍 언어와 달리 JavaScript는 프로토타입 기반 객체지향 프로그래밍 언어(prototype based language)이다.

prototype이란?

  • 클래스 기반 객체지향 프로그래밍 언어는 객체 생성 이전에 클래스를 정의하고 이를 통해 객체(인스턴스)를 생성

  • 하지만 프로토타입 기반 객체지향 프로그래밍 언어는 클래스 없이도 객체 생성 가능

  • 객체의 원형이라고 표현(prototype을 유전자라고 표현)

  • 함수 객체에는 Prototype이라는 특수한 유형의 객체 프로퍼티(속성)이 존재

  • 이러한 prototype 프로퍼티를 통해 생성자 함수는 인스턴스에게 Prototype 객체에 있는 데이터, 메소드를 상속

  • 인스턴스 객체의 key에 접근할 때, 해당 객체에게 key가 없다면 그 다음으로 상위 prototype 속성에서 key가 있는지 확인

  • 없다면 key를 찾기 위해 더 상위의 prototype에서 찾음.
    => 이것을 prototype chain이라고 함

prototype 쉽게 이해하기🔗

1. 객체 프로퍼티를 통해 상속 받기

arr = [1, 2, 3]이라고만 만들었는데 push, pop을 사용할 수 있는 이유는??
-> 내부적으로 배열 자료형에는 위 메소드를 처리해놓음
-> Array라는 원형이 있고 arr는 Array의 자식이고 Array에게 상속 받음
-> Array 안에 prototype 객체 안에 push, pop 존재

2. Array.prototype을 통해 데이터 새로 만들기

> Array.prototype.name = '어레이';
< '어레이'
> const arr = [1,2,3];
< undefined
> arr.name;
< '어레이'
profile
<FrontendDeveloper />

0개의 댓글