3. Value Types and Reference Types
Types in Javascript (es5기준)
- Boolean
- Number
- String
- Null 타입 - 값 : null
- Undefined 타입 - 값 : undefined
- Object
성격에 따라 크게 두 가지 종류로 나뉜다.
Primitive Value (원시값)
- Number
- String
- Null
- Undefined
Reference Value (참조값)
Object (function, array, arguments … )
1
2
3
4
5
6
7var list1 = [1,2,3];
var list2 = [1,2,3];
list1 === list2; // false (서로 다른 위치)
var list3 = [1,2,3];
var list4 = list3;
list3 === list4; // true (같은 주소 가리킴)1
2
3
4
5
6
7var obj1 = { num : 1};
var obj2 = obj1;
var obj3 = obj2;
var obj4 = obj3;
var obj5 = obj4;
obj1.num++;
console.log(obj5); //21
2
3
4
5
6
7var arr1 = [1,2,3];
var arr2 = arr1;
var arr3 = arr2;
var arr4 = arr3;
var arr5 = arr4;
arr1.push(4);
console.log(arr5);//[1,2,3,4]1
2
3
4
5
6
7
8
9var child1 = {age : 3};
var child2 = {age : 5};
var mother = {
age : 55,
children : [child1, child2]
};
child1.age++;
child2.age++;
console.log(mother.children); //[{age : 4},{age : 6}];1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22function updateAge(){
this.age++;
}
var son = {age : 3, growUp : updateAge};
var daughter = {age : 38, growUp : UpdateAge, children : [son, daughter]};
var mother = {age : 38, growUp : updateAge, children : [son, daugther]};
var father = {age : 38, growUp : updateAge, wife : mother, children : [son, daughter]};
if(father.age === mother.age){
console.log('동갑');
//동갑 (father.age의 값과 mother.age의 값이 primitive로, 값만 같다면 같은 것)
}
if(father.children === mother.children){
console.log('부부');
//안 뜬다 (내용물이 같아도 father.children에서 배열생성하고, mother.children에서 배열생성)
}
if(father.growUp === son.growUp){
console.log('성장가능');
//성장가능 (함수의 위치를 넣어놓은거를 growUp에 넣어둠)
}1
2
3
4
5var array = [1,2,3];
var arry2 = array.slice();
array.splice(0,1);
console.log(array2);
// [1,2,3] (array2는 array를 복사한 것일 뿐이고 array를 건드린거기때문에 array2에는 영향없음)1
2
3
4
5
6
7
8
9
10
11
12
13var child1 = {
age : 111
};
var child2 = {
age : 222
};
var array = [child1, child2];
var array2 = array.slice();
var child3 = {
age : 333
};
array.push(child3);
console.log(array2[0] === array[0]); //true