객체를 다룰 때 가장 많이 실수하는 상황이 객체 간의 비교 연산을 수행할 때이다.
{} == {}
>>> false
객체끼리는 서로 비교하면 false 가 나온다.
객체가 아닌 숫자, 문자열, Boolean, null, Undefined 는 모두 true를 반환한다.
객체는 모양이 같아도 생성할 때마다 새로운 객체가 생성된다.
따라서 같은 객체인지 비교하고 싶다면 기존 객체를 변수에 저장해두어야 한다.
const a = { name : '헨도'};
const arr = [1, 2, a];
console.log(a === arr[2]);
>>> true
객체 사용 시 반드시 알아야 하는 개념이 있는데, 바로 참조(refrence)이다.
const a = {name : 'Hendo'};
const b = a;
a.name = 'hero';
console.log(a.name);
>>> hero
변수 b를 a에 대입한 상황
a의 변수 name을 수정했는데 b도 같이 수정되었다.
객체를 저장한 변수를 다른 변수에 저장하면 두 변수 모두 같은 객체를 저장하는 셈이 된다.
이러한 상황을 변수 a와 b가 같은 객체를 참조하고 있다고 표현한다.
또는 a와 b 그리고 객체 간에 참조 관계가 있다고 표현한다.
다만 객체가 아닌 값은 참조가 되지 않는다.
메모리 내 따로 저장되기 때문에 참조가 되지 않는다.
let a = 'zero'
let b = a
a = 'one'
console.log(b)
>>> zero
다음과 같은 객체가 있을 때, '조' 값에 접근하는 방법은?
const animal = {
name : {
first : '타',
last : '조',
},
gender = 'M';
}
'조'에 접근하는 방법은 2가지이다.
1. animal.name.last
2. animal['name']['last']