자바스크립트에서 오브젝트는 객체를 의미한다.
JS에서 가장 중요하고 많이 사용되는 데이터 타입이다.
1. 선언 및 정의
객체 선언 및 정의는 아래와 같다.
let gildong = {
name : '홍길동',
key : 170,
attack : function (){
return `${this.name}이 공격합니다.`;
}
};
각 문자열, 숫자, 함수 를 선언하고 정의했다.
this
키워드는 현재 객체의 프로퍼티를 호출하기 위해 사용된다.
추가로, 변수로 정의하는 방법도 있다.
const name = '홍길동';
const gildong = {
name,
};
이렇게 하면 'name':'홍길동' 으로 Key:Value 가 자동으로 정의된다.
2. 호출
호출 방법은 아래와 같다.
// 객체의 모든 프로퍼티를 출력
console.log(gildong);
// 객체의 name 에 담긴 value 출력
console.log(gildong.name);
console.log(gildong['name']);
const key = 'name';
console.log(gildong[key]);
// 객체의 attack() 함수 호출
console.log(gildong.attack());
또한, 모든 키값, 밸류값을 가져오는 방법도 있다.
모든 키값 호출
Object.keys(gildong)
console.log(Object.keys(gildong));
모든 밸류값 호출
Object.values(gildong)
console.log(Object.values(gildong));
3. 변수에 담긴 Key, Value를 객체에 담기
변수에 담긴 Key
혹은 Value
는 아래 방법처럼 정의가 가능하다.
// name 의 Key:Value
const nameKey = 'name';
const nameValue = '홍길동';
// height 의 Key:Value
const heightKey = 'height';
const heightValue = 170;
const gildong2 = {
[nameKey]: nameValue,
[heightKey]: heightValue,
}
4. 객체 값 변경
gildong2['skill'] = 'rage';
gildong2['height'] = 180;
delete gildong2['skill'];
5. 객체의 특징
Copy by Value & Copy by Reference 에서 다룬 내용처럼 객체는 프로퍼티를 가리키는 메모리 공간과 프로퍼티가 담긴 메모리 공간으로 구성되어 있다.
그렇기 때문에 const로 선언된 객체는 예를 들어,
const gildong3 = {
name : '홍길동',
key : 170,
attack : function (){
return `${this.name}이 공격합니다.`;
}
};
으로 gildong3
이 const로 선언 및 정의되어 있을 때,
gildong3 = {};
로 객체 자체를 변경하는 것은 불가능하다.
하지만
gildong3['name'] = '김철수'
처럼 gildong3
의 프로퍼티를 변경하는 것은 가능하다는 것.