객체는 다른 데이터 타입(텍스트, 숫자, 배열 등)처럼 변수에 저장할 수 있습니다.
let 변수명 = {};//빈 객체를 할당
let 변수명 = ['데이터1', '데이터2', '데이터3', '데이터4'....];
let difficult = {
'my name': 'boong',
color: 'silver',
키: '한글인 키는 따옴표가 없어도 되는군!!',
'!키': '느낌표 있는 키는 따옴표가 필요하군',
$special: '$는 없어도 되는군'
};
console.log(difficult.my name); // 오류
console.log(difficult['my name']);//실행가능
let name = '키';
console.log(difficult[name]);
프로퍼티[키] = '값 할당';
let methodObj = {
do: function() {
console.log('메서드 정의는 이렇게');
}
}
호출:
methodObj.do();
중첩된 객체 (Nested Object)
실무에서 사용되는 객체는 거의 중첩 되어있다.
프로퍼티의 값이 객체일수도 있고, 프로퍼티의 값인 배열의 요소가 객체일 수 도 있다.
객체는 reference로 저장된다.
const a = '안녕';
const b = '안녕';
console.log(a === b);
BUT!
const hiObj = {
name: '안녕'
};
const helloObj = {
name: '안녕'
};
console.log('객체비교 =>', hiObj === helloObj);
아래의 객체는 생긴 모양이 같지만, false라고 출력된다.
그이유는 객체는 변수에 저장할 때, 객체 자체를 그대로 저장하는 것이 아니기 때문!이다. 객체가 담긴 어느 메모리의 reference를 저장하기 때문
객체를 담은 변수를 비교하면 서로 같지 않다고 나온다. 그런데 객체 내부의 프로퍼티 값이 텍스트일 경우는 텍스틀르 비교하게 되어서 서로같음/다름 여부를 판단할 수 있다.