티스토리 뷰

JavaScript

JS prototype /create

Aairon 2019. 2. 14. 13:34

quiz1

1
2
3
4
var obj1 = { x: 10 };
var obj2 = Object.create(obj1); //obj1을 상속 받음, x값이 prototype에 위치
 
var result = obj2.x; // proro에 위치한 x값 10을 가져옴
cs


quiz2

1
2
3
4
5
6
var obj1 = { x: 10 }; 
var obj2 = Object.create(obj1); // obj1을 상속받음
 
obj2.x = 20// obj2에 x를 정의하고 20의 값을 넣음
 
var result = obj2.x; // 상속을 받았지만 x가 생성되면서 더 가까운 20의 값을 가져옴
cs


quiz3

1
2
3
4
5
6
var obj1 = { x: 10 };
var obj2 = Object.create(obj1); //obj1 상속
 
obj2.x = 20// obj2에 x를 선언
 
var result = obj1.x; // 둘은 서로 다른 것 이므로 result = 10
cs


quiz4

1
2
3
4
5
6
7
var obj1 = { x: 10 };
var obj2 = Object.create(obj1); // 상속
var obj3 = Object.create(obj1); // 상속
 
obj1.x = 15// 상속받은 obj2, obj3의 proto x의 값도 바뀜
 
var result = obj2.x + obj3.x; // 30
cs


quiz5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var obj1 = { x: 10 };
var obj2 = Object.create(obj1); // 상속
 
obj2.x += 10;
/*obj2
    {x: 20}
         __proto__: x: 10
*/
obj1.x = 15// obj2의 proto x의 값도 15로 변경
/*obj2
    {x: 20}
         __proto__: x: 15
*/
 
var result = obj2.x; // obj2의 proto x값이랑은 상관없이 가까운 x의 값 20
cs



quiz6

1
2
3
4
5
var obj1 = { x: 10 };
var obj2 = Object.create(obj1); // obj1 상속
var obj3 = Object.create(obj2); // obj2 상속
 
var result = obj3.x + 10// 20
cs


quiz7

1
2
3
4
5
6
7
var obj1 = { x: 10 };
var obj2 = Object.create(obj1); //obj1 상속
var obj3 = Object.create(obj2); //obj2 상속
 
obj2.x = 20//obj2에 x값이 새로 생성
 
var result = obj3.x + 10// obj2의 x 20+10 = 20
cs


quiz8

1
2
3
4
5
6
var MyFunc = function () {};
MyFunc.prototype.x = 10// MyFunc의 proto 에 x를 넣는다
var obj1 = new MyFunc(); //new를 사용하여 class 생성
var obj2 = new MyFunc();
 
var result = obj1.x + 10// 20
cs


반응형

'JavaScript' 카테고리의 다른 글

es6 문법 const let var  (0) 2019.03.07
Javascript Event loop  (0) 2019.03.04
Debug  (0) 2018.10.24
arr 메소드  (0) 2018.10.22
string / number 메소드  (0) 2018.10.22
댓글