객체는 다양한 데이터를 담을 수 있다.
키로 구분된 데이터 집합이나 복잡한 개체를 저장할 수 있다.
객체는 중괄호 {..} 를 이용해 만들 수 있는데, 중괄호 안에는 '키(key):값(value)'쌍으로 구성된 프로퍼티 (property)를 여러개 넣을 수 있는데, 키 (key)엔 문자형,값(value)엔 모든 자료형이 허용된다.
let user = new object(); // 객체 생성자 문법
let user = {}; // 객체 리터럴 문법
***중괄호를 이용해 객체를 선언하는것을 객체 리터럴 (object literal) 이라 부른다.**
let user = { // 객체
name: "John", // 키: "name", 값: "John"
age: 30 // 키: "age", 값: 30
};
*콜론(:)을 기준으로 왼쪽엔 키가, 오른쪽엔 값이 위치한다. 프로퍼티 키는 프로퍼티 '이름' 혹은 '식별자'라고도 부른다.
let obj = {
cat: 'meow',
dog: 'woof'
};
let sound = obj.cat; // objectName.propertyName;
console.log(sound); // meow
1-1.프로퍼티 식별자는 오직 알파벳만 가능 (_&$ 포함)
1-2.숫자로 시작할 수 없음
1-3.변수를 포함할 수 없음
let obj = {
cat: 'meow',
dog: 'woof'
};
let sound = obj.['cat']; // objectName["propertyName"]
console.log(sound); // meow
2-1. 프로퍼티 식별자는 문자열 혹은 문자열을 참조하는 변수
2-2. 숫자로 시작 할 수 있음
2-3. 변수,공백 사용 가능
let obj = {
fruit : "favorite fruit",
"favorite fruit" : {
apple : "first",
peach : "second",
banana : "third"
}
};
// 속성 추가
obj.num = 100;
console.log(obj.num); // 100
// 속성 값 변경
obj.fruit = "urim";
console.log(obj.fruit); // "urim"
console.log(obj);
객채의 속성을 삭제할 때는 delete 연산자를 사용한다.
- dot notation, bracket notation 모두 사용 할 수 있음.
let obj = {
cat: 'meow',
dog: 'woof',
duck: 'quack',
cow: 'moo',
};
delete obj.cat;
console.log(obj); // cow: "moo", dog: "woof", duck: "quack"
delete obj['dog'];
console.log(obj); // cat: "meow", cow: "moo", duck: "quack"
delete를 사용하여 array 특정 index를 지워버리면 그 자리가 empty가 된다.
let obj = [
{cat: 'meow'},
{dog: 'woof'},
{duck: 'quack'},
{cow: 'moo'}]
delete obj[0];
console.log(obj);
/*
[undefined, {dog: "woof"},
{duck: "quack"},{cow: "moo"}]
*/