안녕하세요. Tay 입니다.
Javascript 는 prototype 기반 언어입니다.
여기서 프로토타입 이라는 것이 무엇인지 아래 내용으로 확인해보시죠!
프로토타입 (Prototype)
모든 객체는 자신의 부모 역할을 하는 객체와 연결되어 있다. 이러한 부모 객체를 프로토타입 이라 한다.
1) index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<!-- <script src="reference.js"></script> -->
<!-- <script src="compare.js"></script> -->
<script src="prototype.js"></script>
</body>
</html>
2) prototype.js
var a = 10;
console.log(a);
var objA = {
value : 10
};
console.log(objA);
첫번째 log 에서는 기본 타입 a 변수를 출력한다.
두번재 log 에서는 객체 objA 를 출력한다.
과연 두 log 에서 얻을 수 있는 차이가 무엇인지 확인 해보자.
결과 :
우리는 단지 객체 objA 를 선언하고 value 프로퍼티를 생성 했다.
그런데 자동으로 __proto__ 가 있다. 그 이유는 무엇일까?
이유 :
직접 객체 리터럴로 생성한 value 프로퍼티 이외에도 __proto__ 프로퍼티가 있다.
이 __proto__ 프로퍼티는 앞에 설명한 "모든 객체는 자신의 부모 역할을 하는 객체와 연결되어 있다" 를 뜻한다. 즉, 객체는 자신의 부모 객체를 __proto__ 라는 내부 프로퍼티로 연결하고 있다.
※ __proto__ 프로퍼티가 가르키는 객체가 Object.prototype 객체이며, 부모 객체로부터 상속받는다.
이 글은 개인 공부목적으로 작성되었습니다.
정보가 잘못 되거나 궁금한 사항은 댓글로 부탁드립니다!! 읽어주셔서 감사합니다.
'JavaScript > Basic-Javascript' 카테고리의 다른 글
자바스크립트 정리하며 배우기[13] - 배열(array) length 와 배열 메소드 push , pop, delete 요소 삭제 (0) | 2020.01.08 |
---|---|
자바스크립트 정리하며 배우기[12] - 배열 개념 및 특성, 배열 선언 방법, 요소 생성, 프로퍼티 생성과 삭제 (0) | 2020.01.07 |
자바스크립트 정리하며 배우기[10] - 참조(reference) 타입 비교(compare) (0) | 2020.01.07 |
자바스크립트 정리하며 배우기[09] - 참조(reference) 타입 개념 및 특성 (0) | 2020.01.07 |
자바스크립트 정리하며 배우기[08] - for in 문 객체 출력 (0) | 2020.01.06 |