javascript

[javascript] prototype과 [[prototype]]의 차이, implicit prototype link

2021. 12. 16. 09:12
목차
  1. 프로토타입
  2. [[prototype]] 링크
  3. prototype
  4. 예시
  5. 정리
728x90
반응형

프로토타입

 

JavaScript는 프로토타입 기반 언어(prototype-based language)이다.

프로토 타입 기반 언어라는 것은 모든 객체들이 메소드와 속성들을 상속 받기 위한 템플릿으로써 프로토타입 객체(prototype object)를 가진다는 의미이다.

 

[[prototype]] 링크

자바스크립트의 모든 객체는 자신의 부모인 프로토타입 객체를 가리키는 참조 링크 형태의 숨겨진 프로퍼티가 있다. ECMA Script에서는 이러한 링크를 implicit prototype link(암묵적 프로토타입 링크)라고 부른다.

이 링크를 [[prototype]]이라고 표현한다.

 

prototype

모든 객체는 자신을 생성한 생성자 함수의 prototype 프로퍼티가 가리키는 객체를 자신의 [[prototype]]링크로 연결한다.

 

예시

const a = { b : 1 };
console.dir(a);

다음과 같은 코드를 콘솔로 찍어보면 아래와 같다.

 

 

a에는 b라는 값이 들어있다.

이 b를 a라는 객체의 속성(property)이라고 부른다.

 

그 밑에 [[prototype]]에는 Object가 들어있다.

 

이 객체는 리터럴 방식으로 생성되었다.

(리터럴 방식이란 위와같이 a = { } 방식으로 객체를 생성하는 것을 말한다.)

javascript에서는 리터럴로 객체를 생성하면 내부적으로 Object 생성자 함수에 new를 붙여서 객체가 생성된다.

생성자 함수의 prototype을 자식의 [[prototype]]이 가리키므로, a는 Object의 메소드와 속성을 상속받는다.

 

예를 들어, a는 Object의 속성인 toString을 사용할 수 있다.

a.toString();

이러한 상속은 프로토타입 체이닝에 의해 가능하다.

https://wouldyou.tistory.com/30

 

[javascript] 프로토타입 체이닝이란?

결론 프로토타입 체이닝이란, 자신에게서 먼저 프로퍼티를 찾고 없으면, [[prototype]]링크가 가리키는 객체에서 찾는 것을 말한다. [[prototype]]링크가 가리키는 객체에도 없으면 그 객체의 [[prototype]

wouldyou.tistory.com

정리

1. prototype은 자신의 프로토타입 객체를 가리킨다. 생성자 함수를 통해 생성시, 자식의 [[prototype]]링크가 자신의 prototype 객체를 가리키게 된다.

2. [[prototype]]링크는 부모의 prototype객체를 가리킨다.

728x90
반응형

'javascript' 카테고리의 다른 글

[javascript] 상속 구현하기  (0) 2021.12.30
[javascript] 프로토타입 체이닝이란?  (0) 2021.12.20
[javascript] javascript에서 private 사용하기, javascript 공개, 비공개 메소드 만들기  (0) 2021.11.10
[javascript] object에서 key값에 접근할 때 오류, object[" "]형식으로 접근하기  (0) 2021.10.22
JavaScript Closures MDN 예제 해석  (0) 2021.09.10
  1. 프로토타입
  2. [[prototype]] 링크
  3. prototype
  4. 예시
  5. 정리
'javascript' 카테고리의 다른 글
  • [javascript] 상속 구현하기
  • [javascript] 프로토타입 체이닝이란?
  • [javascript] javascript에서 private 사용하기, javascript 공개, 비공개 메소드 만들기
  • [javascript] object에서 key값에 접근할 때 오류, object[" "]형식으로 접근하기
우주유령
우주유령
우주유령
우주
우주유령
전체
오늘
어제
반응형
  • 분류 전체보기 (131)
    • javascript (28)
    • java (26)
    • Web (16)
    • React (7)
    • SQL (2)
    • Spring (20)
    • IntelliJ (6)
    • JSP (1)
    • Notion (1)
    • VScode (8)
    • Vue (3)
    • css (1)
    • tistory (1)
    • jpa (8)
    • 책 (1)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

최근 글

hELLO · Designed By 정상우.
우주유령
[javascript] prototype과 [[prototype]]의 차이, implicit prototype link
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.