1. ๊ฐ์ฒด๋?
์, ๋ฐฐ์ด์ ๋ฐฐ์ ๋ค๋ฉด ์ด์ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ธ ์๊ฐ์ด๋ค. ๋น์ ํ์๋ฉด, JavaScript์์์ ๊ฐ์ฒด๋ ๊ฒ์ ์บ๋ฆญํฐ์ ๋น์ทํ๋ค๊ณ ํ ์ ์๋ค. ์ฌ์ฉ์๋ค์ ์บ๋ฆญํฐ๋ ๋์ผํ๊ฒ ์ง์ ๊ณผ ๋ฅ๋ ฅ์ ๊ฐ์ง๊ณ ์์ง๋ง, ๊ฐ๊ฐ ์ธ๋ถ์ ์ธ ๋ด์ฉ์ ๋ค๋ฅด๋ค. ๋๊ตฐ๊ฐ๋ Ella๋ผ๋ ID์ ๋ง๋ฒ์ฌ๋ผ๋ ์ง์ ์ ๊ฐ์ง๊ณ ์์ง๋ง, ๋ค๋ฅธ ๋๊ตฐ๊ฐ๋ Chloe๋ผ๋ ID์ ์ ์ฌ๋ผ๋ ์ง์ ์ ๊ฐ์ง๊ณ ์๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ๊ฐ์
ํ ๋ ์
๋ ฅํ ํญ๋ชฉ์ ๋ชจ๋ ๊ฐ์ง๋ง, ์
๋ ฅํ๋ ์ ๋ณด๋ ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅด๋ค. ์ด๋ ๊ฒ ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง ์ ์์ง๋ง, ์
๋ ฅํด์ผ ํ๋ ๋ฐ์ดํฐ์ ์ข
๋ฅ๊ฐ ๋์ผํ ๊ฒฝ์ฐ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฝ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
์ด๋ ๋ฏ, ๊ณตํต์ ์ธ ์์ฑ์ ๊ฐ์ง๋ ๊ฒฝ์ฐ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ์น์ฌ์ดํธ์ ๊ฐ์
ํ ํ์ ์ฃผ์๋ก์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํด ๋ณด์.
let userFirstName = 'Ella';
let userLastName = 'Choi';
let userEmail = 'ella@gmail.com';
let userCity = 'Seoul';
let userFirstName = 'Chloe';
let userLastName = 'Kim';
let userEmail = 'chloe@gmail.com';
let userCity = 'Seoul';
์์ ๊ฐ์ด ๋งค๋ฒ ์ฌ๋ฌ ๊ฐ์ ๋ณ์๋ฅผ ์ ์ธํด ์ฃผ์ด์ผ ํ ๊น? ๊ฐ์ฒด๋ฅผ ํ์ฉํ๋ฉด ์๋์ ๊ฐ์ด ๋ณ์๋ฅผ ํ๋ฒ๋ง ์ ์ธํด ์ฃผ๋ฉด ๋๋ค. ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถํ๋ ๋ฐฉ๋ฒ๋ ํจ๊ป ์์๋ณด์.
let user = { // ์ค๊ดํธ๋ก ๊ฐ์ฒด ๋ง๋ฌ
firstName: 'Ella', // ํ ์์ ์ด๋ฆ๊ณผ ๊ฐ์ ',' ๋ก ๊ตฌ๋ถ, ์ด๋ฆ๊ณผ ๊ฐ์ ':' ์ผ๋ก ๋ถ๋ฆฌ
lastName: 'Choi', // ์ฌ๊ธฐ์ lastName๋ ํค(key), 'Choi'๋ ๊ฐ(value)
email:'ella@gmail.com',
city: 'Seoul'
2. ๊ฐ์ฒด์ ๊ฐ์ ์กฐํํ๋ ๋ฐฉ๋ฒ ๋ ๊ฐ์ง
a. Dot notation: ๊ฐ์ฒด + .(์ ) + ํค ๊ฐ์ ํํ๋ก ์์ฑํ๋ค.
let user = {
firstName: 'Ella',
lastName: 'Choi',
email:'ella@gmail.com',
city: 'Seoul'
};
// ํ์: ๊ฐ์ฒด + .(์ ) + ํค ๊ฐ
user.firstName; // 'Ella'
user.city; // 'Seoul'
b. Bracket notation: ํค ๊ฐ์ด ๋๊ดํธ ์์ '๋ฌธ์์ด'๋ก ๋ค์ด๊ฐ๋ค. ์ด ์ ์ ์ฃผ์ํ์.
let user = {
firstName: 'Ella',
lastName: 'Choi',
email:'ella@gmail.com',
city: 'Seoul'
};
// ํ์: ํค ๊ฐ์ด ๋๊ดํธ ์์ '๋ฌธ์์ด'๋ก ๋ค์ด๊ฐ
user['firstName']; // 'Ella'
user['city']; // 'Seoul'
3. ๊ฐ์ฒด๋ฅผ ๋ค๋ฃจ๋ ๋ค์ํ ๋ฐฉ๋ฒ
a. Bracket notation: ํค ๊ฐ์ด ๋์ ์ผ๋ก ๋ณํ ๋ ๋ฐ๋์ ์ฌ์ฉ
let person = {
name: 'Ella',
age: 16
}; // ํค ๊ฐ์ด ๊ณ์ ๋ณํ๋ ์ํฉ
// name ๊ฐ ์กฐํ
let output = getProperty(person, 'name');
console.log(output); // -> 'Ella'
// name ๊ฐ ์กฐํ ๋ฐฉ๋ฒ
function getProperty(obj, propertyName) {
return obj[propertyName]; // obj['name']
}
// ์ฃผ์1: return person.name (X) Ella๋ง ๋์ค๊ธฐ์ -> obj[propertyName]๋ฅผ ๋ฃ์ด์ผ ํจ
// ์ฃผ์2: return.propertyName (X) -> propertyName ๋ผ๋ ํค ์ด๋ฆ์ด ๋ณ๋๋ก ์์ด์ผ ๋ฃ์ ์ ์์
// age ๊ฐ ์กฐํ
let output = getProperty(person, 'age');
console.log(output2); // -> 16
// age ๊ฐ ์กฐํ ๋ฐฉ๋ฒ
function getProperty(obj, propertyName) {
return obj[propertyName]; // obj['age']
}
b. dot/bracket notation์ผ๋ก ๋ค์ํ ๊ฐ์ ์ถ๊ฐํ ์๋ ์์
let tweet = {
writer: 'Ella Choi',
createdAt: '2022-02-28 12:03:33',
content: '์ฝ๋ฉ์ ์ฌ๋ฐ์ด'
};
// ๋ค์ํ ๊ฐ์ ๋ฃ์ ์ ์์
tweet['category'] = '์ด์ผ๊ธฐ'; // Bracket notation์ผ๋ก ์ด์ผ๊ธฐ ๋ผ๋ ๋ฌธ์์ด์ ์ถ๊ฐ
tweet.isPublic = true; // Dot notation์ผ๋ก Boolean๊ฐ์ ์ถ๊ฐ
tweet.tags = ['#์ฝ๋ฉ', '#๊ฐ๋ฐ์'] // Dot notation์ผ๋ก ๋ฐฐ์ด์ ์ถ๊ฐ
c. delete ํค์๋๋ก ์์ฑ ์ญ์ ๋ ๊ฐ๋ฅ
let tweet = {
writer: 'Ella Choi',
createdAt: '2022-02-28 12:03:33',
content: '์ฝ๋ฉ์ ์ฌ๋ฐ์ด'
};
delete tweet.createdAt; // createAt ํค-๊ฐ ์์ ์ง์
tweet.createdAt // ์ง์์ก์ผ๋ ์ฝ์์ ์ฐ์ผ๋ฉด undefined๋ก ๋์ด
// tweet์ ๋ค์๊ณผ ๊ฐ๊ฒ ๋จ
// {writer: 'Ella Choi', content: '์ฝ๋ฉ์ ์ฌ๋ฐ์ด'}
d. in ์ฐ์ฐ์๋ก ํด๋นํ๋ ํค๊ฐ ์๋์ง ํ์ธ ๊ฐ๋ฅ
let tweet = {
writer: 'Stevelee',
createdAt: '2022-02-28 12:03:33',
content: '์ฝ๋ฉ์ ์ฌ๋ฐ์ด'
};
'content' in tweet; // true
'updatedAt' in tweet; // false
4. ๋ฌธ์์ด ์์ฑ ์ ํํ ํ๋ ์ค์
Bracket notation ์ฌ์ฉ ์ ๋๊ดํธ๋ฅผ ๋นผ๋จน๋๋ค๊ฑฐ๋, ๋ณ์ ์ ์ธ์ ํ์ง ์์๋ค๊ฑฐ๋ ๋ฑ๋ฑ ์ฌ์ํ ์ค์๋ฅผ ๋ง๊ธฐ ์ํด ์๋ ๋ด์ฉ์ ํ๋์ฉ ์ดํดํ๋ฉฐ ๋์ ์ตํ๋ณด์!
let user = {
firstName: 'Ella',
lastName: 'Choi',
email:'ella@gmail.com',
city: 'Seoul'
};
user['firstName']; // 'Ella' : Bracket notation์ผ๋ก ๊ฐ์ฒด์ ๊ฐ ์กฐํ
user[firstName]; // ReferenceError: firstName is not defined : firstName์ด ๋ณ์์ทจ๊ธ ๋๊ณ ์๋ ๊ฒ์
let keyname = 'firstName'; // keyname์ 'firstName'๋ผ๋ ๋ฌธ์์ด์ ๋ด์๋ด
user[keyname] // 'Ella' : 'firstName' ๋ฌธ์์ด ๊ฐ์ด keyname๋ก ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์
user[keyname] === user['firstName'] // true : ์ฌ์ค์ Bracket notation์ผ๋ก ๊ฐ์ฒด ๊ฐ ์กฐํํ ๊ฒฐ๊ณผ์ ๊ฐ์
let firstName = 'Ella'
user[firstName] === user['firstName'] // false : Bracket notation ์ฌ์ฉ ์ ๋๊ดํธ ์์ ๋ฌธ์์ด์ด ๋ค์ด๊ฐ์ผ ํจ
user[keyname] === user['firstName'] // true
user['firstName'] === user.firstName // true :Dot notation === Bracket notation
user[firstName] === user.firstName // false : Bracket notation ์ฌ์ฉ ์ ๋๊ดํธ ์์ ๋ฌธ์์ด์ด ๋ค์ด๊ฐ์ผ ํจ
user[firstName] === user['firstName'] // false
๋๊ธ