자료형에서 하나의 데이터만 담을수 있는 '원시형'과 달리 객체는 다양한 데이터를 담을 수 있습니다. key로 구분된 데이터 집합이나 복잡한 개체(entity)를 저장할 수 있습니다.
중괄호 안에는 ‘키(key): 값(value)’ 쌍으로 구성된 프로퍼티(property) 를 여러 개 넣을 수 있는데, 키엔 문자형, 값엔 모든 자료형이 허용됩니다. 프로퍼티 키는 ‘프로퍼티 이름’ 이라고도 부릅니다.
⭐️ 객체를 서랍장에 비유하면 이해하기 쉽다
1. 서랍장 안의 파일은 프로퍼티
2. 각가의 파일에 붙어있는 이름표는 프로퍼티의 key
1️⃣ let user = new Object(); // '객체 생성자' 문법
2️⃣ let user = {}; // '객체 리터럴' 문법
{...} 중괄호를 사용하여 객체를 선언하는 것을 객체 리터럴(object literal) 이라 합니다. 주로 이 방법으로 객체를 생성!
let user = {
name : "moon", // 첫번 째 프로퍼티
age : 32 // 두번 째 프로퍼티
}
user라는 객체(서랍장) 에 두개의 프로퍼티가 (파일) 들어있습니다.
'점’은 키가 '유효한 변수 식별자’인 경우에만 사용할 수 있습니다. 유효한 변수 식별자엔 공백이 없어야 합니다. 또한 숫자로 시작하지 않아야 하며 $와 _를 제외한 특수 문자가 없어야 합니다.
키가 유효한 변수 식별자가 아닌 경우엔 점 표기법 대신에 '대괄호 표기법(square bracket notation)'이라 불리는 방법을 사용할 수 있습니다. 대괄호 표기법은 키에 어떤 문자열이 있던지 상관없이 동작합니다.
let user = {
name : "moon",
age: 32,
}
user["location"]="korea"
console.log(user) // 객체 안에 location : "korea" 프로퍼티가 추가됩니다.
대괄호 표기법을 사용하면 아래 예시에서 변수를 키로 사용한 것과 같이 문자열뿐만 아니라 모든 표현식의 평가 결과를 프로퍼티 키로 사용할 수 있습니다.
⭐️ 계산된 프로퍼티
객체를 만들 때 객체 리터럴 안의 프로퍼티 키가 대괄호로 둘러싸여 있는 경우, 이를 계산된 프로퍼티 라고 합니다.
let fruit = prompt("어떤 과일을 구매하시겠습니까?", "apple");
let bag = {};
// 변수 fruit을 사용해 프로퍼티 이름을 만들었습니다.
bag[fruit] = 5;
===> bag={apple: 5}
⭐️ 단축 프로퍼티
1번은 식별자와 파라미터의 구분을 알아보려고 작성해보았습니다 (헷갈림...)
2번은 단축 프로퍼티로 name 만 작성하여도 name:name과 같습니다.