[ Javascript ] 자바스크립트 기본 문법 | prototype & prototype chain

2021. 2. 4. 09:36·Archive/Develop
728x90
반응형

이미지 출처 :  https://commons.wikimedia.org/wiki/File:JavaScript-logo.png

 

 

 

 

해당 포스팅은 생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅임을 미리 알립니다.

 

 

 


 

상속의 구체적인 수단인 prototype에 대해서 자세히 알아보는 포스팅이 될 것 같습니다.

 

 

 

 

 

자바스크립트 기본 문법  ::  prototype

 

 

 

prototype은 한국어로는 원형 정도로 번역됩니다.

 

prototype은 말 그대로 객체의 원형이라고 할 수 있습니다.

 

함수는 객체입니다.

 

그러므로 생성자로 사용될 함수도 객체입니다.

 

 

객체는 프로퍼티를 가질 수 있는데,

prototype이라는 프로퍼티는 그 용도가 약속되어 있는 특수한 프로퍼티입니다.

 

prototype에 저장된 속성들은 생성자를 통해서 객체가 만들어질 때 그 객체에 연결된다고 보면 됩니다.

 

 

 

 

자바 스크립트 기본 문법  :: prototype chain

 

 

 

 

prototype chain 의 개념은 예제와 같이 설명하도록 하겠습니다.

 

 

 

function Ultra(){}
Ultra.prototype.ultraProp = true;
 
function Super(){}
Super.prototype = new Ultra();
 
function Sub(){}
Sub.prototype = new Super();
 
var o = new Sub();
console.log(o.ultraProp);

 

 

 

 

 

생성자 Sub를 통해서 만들어진 객체 o가 Ultra의 프로퍼티 ultraProp에 접근 가능한 것은

prototype 체인으로 Sub와 Ultra가 연결되어 있기 때문입니다.

 

 

내부적으로는 아래와 같은 일이 순차적으로 일어납니다.

 

 

 

  1. 객체 o에서 ultraProp를 찾는다.
  2. 없다면 Sub.prototype.ultraProp를 찾는다.
  3. 없다면 Super.prototype.ultraProp를 찾는다.
  4. 없다면 Ultra.prototype.ultraProp를 찾는다.

 

 

 

prototype는 객체와 객체를 연결하는 체인의 역할을 하는 것입니다.

 

 

이러한 관계를 prototype chain이라고 부릅니다.

 

 

 

 

 

추가적으로, 

Super.prototype = Ultra.prototype

 

이런식으로 코드를 작성하면 안됩니다.

 

이렇게 Super.prototype의 값을 변경하면 그것이 Ultra.prototype도 영향을 주기 때문입니다.

 

 

Super.prototype = new Ultra();는 Ultra.prototype의 원형으로 하는 객체가 생성되기 때문에

new Ultra()를 통해서 만들어진 객체에 변화가 생겨도 Ultra.prototype의 객체에는 영향을 주지 않게됩니다.

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ JavaScript ] 자바스크립트 기본 문법 | Object 란?  (0) 2021.02.04
[ JavaScript ] 자바스크립트 기본 문법 | 표준 내장 객체란?  (0) 2021.02.04
[ JavaScript ] 자바스크립트 기본 문법 | 상속(inheritance)이란 무엇인가?  (0) 2021.02.04
[ JavaScript ] 자바스크립트 기본 문법 | 함수와 this | this 가 가리키는 것들의 종류  (0) 2021.02.04
[ JavaScript ] 자바스크립트 기본 문법 | 전역 객체(Global object)란? | window 객체  (0) 2021.02.04
'Archive/Develop' 카테고리의 다른 글
  • [ JavaScript ] 자바스크립트 기본 문법 | Object 란?
  • [ JavaScript ] 자바스크립트 기본 문법 | 표준 내장 객체란?
  • [ JavaScript ] 자바스크립트 기본 문법 | 상속(inheritance)이란 무엇인가?
  • [ JavaScript ] 자바스크립트 기본 문법 | 함수와 this | this 가 가리키는 것들의 종류
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    코드업 파이썬 기초 100제
    장고
    자바스크립트 API
    코드업
    파이썬 기초
    javascript
    C++
    Codeup
    파이썬 알고리즘
    Django
    자바스크립트 객체
    Oracle
    비박스
    자바스크립트
    백준 풀이
    oracle db
    파이썬
    docker
    파이썬 기초 문제
    백준
    Git
    코드업 기초
    Python
    보안뉴스
    백준 파이썬
    파이썬 백준
    오라클
    백준 문제풀이
    파이썬 문제
    카카오 100일 프로젝트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ Javascript ] 자바스크립트 기본 문법 | prototype & prototype chain
상단으로

티스토리툴바