Jveloper

2019. 05. 30 이머시브 수업 4일차(prototype chain, Object.create) 본문

CodeStates Immersive 13기

2019. 05. 30 이머시브 수업 4일차(prototype chain, Object.create)

Jveloper 2019. 6. 1. 00:17

Object.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)

Object.create 의 상속과 같다

4. 다형성(polymorphism)


 

Comments