ํ๋์ ๋ณ์์์ ์ฌ๋ฌ๊ฐ์ง์ ์ ๋ณด๊ฐ ๋ด๊ฒจ์ ธ์์ ๋ ์ฌ์ฉํ๊ธฐ ์ ํฉํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ex) ์ฃผ์๋ก
๊ฐ์ฒด ์ ์ธ ํ, ๊ฐ์ ์ฌ์ฉํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก Dot notation, Bracket notation 2๊ฐ์ง๊ฐ ์์ผ๋ฉฐ, key ๊ฐ์ด ๋์ ์ผ๋ก ๋ณํ ๋ ์ฆ, ๋ณ์์ผ๋ ๋ฐ๋์ braket notation์ ์ฌ์ฉํด์ผํ๋ค.
//๊ฐ์ฒด ์ ์ธ
let user = {
firtName: 'Steve',
lastName: 'Lee',
email: 'steve@codestates.com',
city: 'seoul'
};
//๊ฐ์ฒด ๊ฐ ์ฌ์ฉ - ๋ฐฉ๋ฒ1. Dot notation
user.firtName; // 'steve'
user.city; // 'Seoul'
//๊ฐ์ฒด ๊ฐ ์ฌ์ฉ - ๋ฐฉ๋ฒ2. Bracket notation
user['firstName']; // 'steve'
user['city']; // 'Seoul'
// example
let tweet = {
writer: 'stevelee',
createAt: '2019-09-10 12:03:33',
content: 'ํ๋ฆฌ์ฝ์ค ์ฌ๋ฐ์ด์!'
};
// 'ํ๋ฆฌ์ฝ์ค ์ฌ๋ฐ์ด์!'๋ฅผ bracket notation์ผ๋ก ์กฐํํ๋ ๋ฐฉ๋ฒ์?(์คํธ๋ง์ผ๋ก ๊ฐ์ ธ์ด)
tweet['content']; // O, ' ' ํ ๋ฐ์ดํ ์ฌ์ฉ
tweet["content"]; // O, " " ์ ๋ฐ์ดํ ์ฌ์ฉ
tweet[`content`]; // O, ` ` ๋ฐฑํฑ ์ฌ์ฉ
tweet[content]; // ReferenceError, ์ฌ๊ธฐ์ content๋ ๋ณ์๋ก ์ทจ๊ธ๋๋ค.
//์์ ๋ฐฉ๋ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด ๋๊ธฐ ์ํด์๋ let content = โcontentโ ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก content๋ผ๋ ๋ณ์์ โcontentโ๋ผ๋ ๋ฌธ์์ด์ด ํ ๋น๋์ด ์์ด์ผ ํ๋ค.
parameter๋ก ๊ฐ์ฒด์ ํค๋ฅผ ๋ฐ๋ ํจ์๊ฐ ์๊ณ , ์ด ํจ์๋ ์ฃผ์ด์ง ๊ฐ์ฒด์ ํค๋ฅผ ์ด์ฉํ์ฌ ์์ฑ๊ฐ์ ์ฐพ์ ๋ฆฌํดํฉ๋๋ค.
function getProperty(obj, propertyName){
return obj[propertyName]; // bracket donation
}
let person = {
name: 'Steve',
age: 16
};
// ๋งค๊ฐ๋ณ์๊ฐ ๋ ๋ฌ๋ผ์ง ์ ์๊ธฐ๋๋ฌธ์ bracket์ผ๋ก ๋ฆฌํดํด์ผํจ
let output = getProperty(person, 'name');
console.log(output); // 'Steve'
let output2 = getProperty(person, 'age');
console.log(output2); // 16
let tweet = {
writer: 'stevelee',
createAt: '2019-09-10 12:03:33',
content: 'ํ๋ฆฌ์ฝ์ค ์ฌ๋ฐ์ด์!'
};
// ๊ฐ ์ถ๊ฐ
tweet['category'] = '์ก๋ด';
tweet.isPublic = true;
tweet.tags = ['#์ฝ๋์คํ
์ด์ธ ', '#ํ๋ฆฌ์ฝ์ค'];
//๊ฐ ์ญ์ (delete ํค์๋ ์ฌ์ฉ)
delete tweet.createdAt;
//tweet์ ๋ค์๊ณผ ๊ฐ๊ฒ ๋๋ค.
/* {writer: 'stevelee',
content: 'ํ๋ฆฌ์ฝ์ค ์ฌ๋ฐ์ด์!',
category: '์ก๋ด',
isPublic: true,
tags: Array(2)} */
let tweet = {
writer: 'stevelee',
createAt: '2019-09-10 12:03:33',
content: 'ํ๋ฆฌ์ฝ์ค ์ฌ๋ฐ์ด์!'
};
'content' in tweet; // true
'updateAt' in tweet; // false, updatedAt๊ฐ ์์.
let user = {
FirstName: 'Steve',
LastName: 'Lee',
email: 'steve@codestates.com',
city: 'seoul',
name: function() {
return this.FirstName + this.LastName;
}
};
user.name(); // 'SteveLee'
user.name; // ฦ () { return this.FirstName + this.LastName;}
function extend(obj1, obj2) {
for (let key in obj2) {
if (!(key in obj1)) { //obj1์์ obj2์ key๊ฐ ์๋ค๋ฉด? obj1๊ณผ obj2์ ์ค๋ณตkey ์ ๊ฑฐ
obj1[key] = obj2[key]; // obj1 ๊ฐ์ฒด ์์ obj2์ key์ ๊ฐ์ ์ถ๊ฐ
}
}
}
//key -> ๋๊ดํธ ์์ด ์ฐ๋ฉด key
//[key] -> ๋๊ดํธ ํฌํจํ๋ฉด ๊ฐ
Reference: ์ฝ๋์คํ ์ด์ธ