일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- AWS조사
- complexity
- 메모이제이션
- 스코프
- IT
- APPEND
- 기초공부
- var
- node.js설치
- 원본과 복사본
- Big-O notation
- 생활코딩
- prototype
- JavaScript
- 리커젼
- AWS기초
- appendChild
- scope
- let
- 코드스테이츠
- flex기본
- 재귀함수
- AWS
- 인터프리터
- 개발툴
- node.js
- 클로저
- CSS
- css기초
- vscode
- Today
- Total
Jveloper
2019. 05. 30 이머시브 수업 4일차(prototype chain, Object.create) 본문
2019. 05. 30 이머시브 수업 4일차(prototype chain, Object.create)
Jveloper 2019. 6. 1. 00:17Object.create (프로토타입체인 만들기)
var obj1 = { x: 10 };
var obj2 = Object.create(obj1);
var obj3 = Object.create(obj1);
obj1.x = 15;
var result = obj2.x + obj3.x; // 결과값은 30이다
- 나는 이것을 상속의 개념이라 생각했다 (조금 더 고급스럽게 얘기하면 프로토타입체인이라 할 수 있겠다)
그럼 프로토타입 체인이란? JavaScript에서 속성이나 메서드를 참조하게 되면, 먼저 자신 안에 멤버가 정의되어있는지 찾아본 다음,
발견하지 못하면 그 프로토타입으로 이동하여 해당 프로토타입 객체 내에서 멤버를 찾는다
이는 멤버를 찾거나, 멤버를 찾지 못하고 null을 반환하고서야 비로소 끝나는데,
이러한 객체들의 연쇄를 가리켜 프로토타입 체인(prototype chain)이라고 한다
프로토타입 객체는 생성한 각각의 객체에서부터 최상위 객체인 Object의 프로토타입까지 연결되어있다
● 주의해야할 점을 예제로 살펴보자
var obj1 = { x: 10 };
var obj2 = Object.create(obj1);
var obj3 = Object.create(obj2);
obj2.x = 20;
var result = obj3.x + 10; // 결과값은 30이다
순서대로 정리하면 obj3 은 obj2를 바라보고 obj2는 obj1을 바라보고 있는 이 시점에서
obj2에 x를 직접적으로 지정해주고 값을 정해주게 되면 obj1의 값과 obj2의 값은 달라지고,
obj3는 obj2를 참조하고 있기때문에 obj3의 x의 값도 20으로 변하게된다
obj1은 obj2, obj3를 참조를 하고있는게 아니기때문에 값이 바뀌지않는다 !
new 와 Object.create는 프로토를 만든다는거에 있어서 비슷한것같다
자료구조는 따로 자료구조 & 알고리즘에 정리해놨다
OOP (Object Oriented languages: 객체지향언어)
자바스크립트는 이중에서 High-level 에 속한다
기계어는 한번쯤은 봤을법한 0101101010111 이런것이다
내부적으로는 High-level이 Low-level로 변환되고 기계어로 변환된 후 해석을 다하고 다시 돌려받는 과정을 거쳐 실행시킨다
● OOP의 특징
캡슐화/ 추상화/ 상속/ 다형성
1. 캡슐화(Encapsulation)
2. 추상화(Abstraction)
3. 상속(Inheritance)
4. 다형성(polymorphism)
'CodeStates Immersive 13기' 카테고리의 다른 글
2019. 06. 01 이머시브 수업6일차(Week review) (0) | 2019.06.04 |
---|---|
2019. 05. 31 이머시브 수업5일차(Instantiation, extends/super) (0) | 2019.06.03 |
2019. 05. 29 이머시브 수업 3일차(Data structure, today issue) (0) | 2019.05.29 |
2019. 05. 28 이머시브 수업 2일차(underbar, recursion) (0) | 2019.05.29 |
2019. 05. 27 이머시브 첫 수업(OT, ESlint, Jest) (0) | 2019.05.28 |