[javascript] prototype 프로토타입

hana jeong·2022년 12월 8일
0

모던자바스크립트

목록 보기
14/15
let arr = [1,2,3,4,5]

console.log(arr);

변수 arr를 콘솔에 찍어보면 누구나 생각하는 결과값으로 [1,2,3,4,5] 이 나올 것이다
그런데 펼쳐서 보면 우리가 넣은 적이 없는 prototype이라는 것이 뜬다


prototype을 펼치면 아래와 같이 나온다

객체를 만들기 위해서는 자신이 생성되는 데 사용된 원형인 프로토타입 객체를 이용하여 객체를 만든다
원형 객체(프로토타입 객체)를 참고하는 숨겨진 공간이 바로 프로토타입이다

프로토타입은 클래스, 객체의 내용복사 없이도 상속을 구현할 수 있게 해준다


function bakery () {
  menu = "bbang";
  taste = "sweet";
}

bakery.prototype.name = "김씨네 빵집"

let abc = new bakery()

abc.name // "김씨네 빵집"  

abc에 name이라는 걸 만든 적이 없는데 어디서 나온걸까?
컴퓨터는 먼저 변수 abc에 name이 있는지 살펴본다 없으면 부모를 찾아서 name이 있는지 찾아보고 없으면 그 상위에서 또 찾아보고 없으면 또 상위에서 찾아본다
이런 걸 프로토타입 체이닝(prototype chaining)이라고 한다
(설명이 좀 빈약해서 고수가 되면 이 부분 다시 정리하러 오겠습니다...)

그러면 맨 처음에 변수 arr를 호출했을 때 나온 prototype은 부모객체에서 상속받은 걸 알 수 있다

예시를 들고 왔는데 map메소드를 검색하면 MDN에서 이런 식으로 제목이 되어있다
map이라는 메소드가 Array 자료형의 프로토타입에 있기에 배열을 사용할 때 map이라는 메소드를 사용할 수 있는 것이다

profile
https://developer-hh.tistory.com 로 옮깁니다

0개의 댓글