๊ฐ์ฒด์์ key๋ฅผ ์ด์ฉํด ํ๋กํผํฐ๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์๋๋ฐ, ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
Dot notation ( ์ ํ๊ธฐ๋ฒ )๊ณผ Square-Bracket notation( ๋๊ดํธ ํ๊ธฐ๋ฒ )
์ ํ๊ธฐ๋ฒ
const user = {
name : '๋น๋ผ๊ฐฑ',
gender: '๐บ',
'favorite food' : '๐' //๋ณต์์ ๋จ์ด๋ ๋ฐ์ดํ๋ก ๋ฌถ์ด์ค์ผ ํจ
}
alert(user.name) // ๋น๋ผ๊ฐฑ
์์ ๊ฐ์ด ์ ํ๊ธฐ๋ฒ์ ์ด์ฉํด์ name์ด๋ผ๋ key๋ก ํด๋น ํ๋กํผํฐ๋ฅผ ์ฝ์ด์๋ค. ํ์ง๋ง 'favorite food'์ ๊ฐ์ด ์ฌ๋ฌ ๋จ์ด๋ฅผ ์กฐํฉํด ํ๋กํผํฐ key๋ฅผ ๋ง๋ ๊ฒฝ์ฐ ์ ํ๊ธฐ๋ฒ์ผ๋ก ํ๋กํผํฐ๋ฅผ ์ฝ์ ์ ์๋ค.
user.favorite food = '๐' //โ
์๋ฐ์คํฌ๋ฆฝํธ๋ ์์ ๊ฐ์ ์ฝ๋๋ฅผ ์ดํดํ์ง ๋ชปํ๋ค. user.favorite ๊น์ง ์ดํดํ์ง๋ง food๋ฅผ ๋ง๋๋ฉด ๋ฌธ๋ฒ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์ ํ๊ธฐ๋ฒ์ '์ ํจํ ๋ณ์ ์๋ณ์'์ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ ์ ์๋ค.
์ ํจํ ๋ณ์ ์๋ณ์ -> ๊ณต๋ฐฑ์ด ์์ด์ผ ํจ, ์ซ์๋ก ์์ํ๋ฉด ์๋จ, $์ _ ๋ฅผ ์ ์ธํ ํน์๋ฌธ์ ์๋จ
key๊ฐ ์ ํจํ ๋ณ์ ์๋ณ์๊ฐ ์๋ ๊ฒฝ์ฐ '๋๊ดํธ ํ๊ธฐ๋ฒ'์ ์ฌ์ฉํ ์ ์๋ค. ์ด ํ๊ธฐ๋ฒ์ key์ ์ด๋ค ๋ฌธ์์ด์ด ์๋์ง ์๊ด์์ด ๋์ํ๋ค.
๋๊ดํธ ํ๊ธฐ๋ฒ
๋๊ดํธ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ณ์๋ฅผ ํค๋ก ์ฌ์ฉํ ๊ฒ๊ณผ ๊ฐ์ด ๋ฌธ์์ด๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ํํ์์ ํ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ํ๋กํผํฐ ํค๋ก ์ฌ์ฉํ ์ ์๋ค.
const user = {
name : '๋น๋ผ๊ฐฑ',
gender: '๐บ',
'favorite food' : '๐'
}
let food = 'favorite food'
user[food] = '๐'
alert(user[food]) // ๐
๋ณ์ food๋ ๋ฐํ์์ ํ๊ฐ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ ๋ณ๊ฒฝ ๋ฑ์ ๋ฐ๋ผ ๊ฐ์ด ๋ณ๊ฒฝ๋ ์ ์๋ค. ์ด๋ค ๊ฒฝ์ฐ๋ , ํ๊ฐ๊ฐ ๋๋ ์ดํ์ ๊ฒฐ๊ณผ๊ฐ ํ๋กํผํฐ key๋ก ์ฌ์ฉ๋๋ค. ์ด ๋ถ๋ถ์ ์์ฉํ๋ค๋ฉด ์ฝ๋๋ฅผ ์ข ๋ ์ ์ฐํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
const user = {
name : '๋น๋ผ๊ฐฑ',
gender: '๐บ',
'favorite food' : '๐'
}
let key = prompt("์ฌ์ฉ์์ ์ด๋ค ์ ๋ณด๋ฅผ ์ป๊ณ ์ถ์ผ์ ๊ฐ์?", "gender");
alert(user[key]) -> ์ถ๋ ฅ๊ฒฐ๊ณผ ์ด๋ฏธ์ง ํ์ธ
alert(user.key) -> undefined



ํ์ง๋ง ์ ํ๊ธฐ๋ฒ์ผ๋ก๋ ์์ ๊ฐ์ ๋ฐฉ์์ด ๋ถ๊ฐ๋ฅํ๋ค.
eslint ๊ณต์ ๋ฌธ์๋ฅผ ์ดํด๋ณด๋ฉด ๊ฐ๋ ์ฑ๊ณผ ๊ฐ์ ์ธก๋ฉด์์ ์ ํ๊ธฐ๋ฒ์ ๊ถ์ฅํ๋ค. ํ์ง๋ง ํ๋กํผํฐ ์ด๋ฆ์ด ๋ณ์์ธ ๊ฒฝ์ฐ ๋๊ดํธ ํ๊ธฐ๋ฒ์ด ํ์ํจ
https://eslint.org/docs/rules/dot-notation
dot-notation
eslint.org
๊ณ์ฐ๋ ํ๋กํผํฐ
๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์์ ํ๋กํผํฐ ํค๊ฐ ๋๊ดํธ๋ก ๋๋ฌ์ธ์ฌ ์๋ ๊ฒฝ์ฐ, ๊ณ์ฐ๋ ํ๋กํผํฐ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
let food = prompt("๋จน๊ณ ์ถ์ ์์์?", "์ค๋ฆฌ์ฃผ๋ฌผ๋ญ")
let menu = {
[food] : 12000 //๋ณ์ food ์์ ํ๋กํผํฐ ์ด๋ฆ์ ๋์ ์ผ๋ก ๋ฐ์์ด.
}
alert(menu.์ค๋ฆฌ์ฃผ๋ฌผ๋ญ) //food์ ์ค๋ฆฌ์ฃผ๋ฌผ๋ญ์ด ํ ๋น๋์ด 12000์ด ์ถ๋ ฅ๋๋ค.
์ ์์์์๋ [food] ๋ ํ๋กํผํฐ ์ด๋ฆ์ ๋ณ์ food์์ ๊ฐ์ ธ์ค๊ฒ ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
์๋์ ๊ฐ์ด ์ฌ์ฉํ ์๋ ์๋ค.
let food = prompt("๋จน๊ณ ์ถ์ ์์์?", "์ค๋ฆฌ์ฃผ๋ฌผ๋ญ")
let menu = {}
menu[food] = 12000
๋๋
let food = '์ค๋ฆฌ์ฃผ๋ฌผ๋ญ'
let menu = {
['spicy' + food] : 12000 //menu.spicy์ค๋ฆฌ์ฃผ๋ฌผ๋ญ = 12000
}
์์ ๊ฐ์ด ํ๋กํผํฐ ์ด๋ฆ์ ๋ณ์์ ๋ฌธ์์ด์ ํจ๊ป ์ฌ์ฉํ ์ ๋ ์๋ค. ๋๊ดํธ ํ๊ธฐ๋ฒ์ ํ๋กํผํฐ ์ด๋ฆ๊ณผ ๊ฐ์ ์ ์ฝ์ ์์ ์ฃผ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์ ์์ ํจ์ฌ ๊ฐ๋ ฅํ์ง๋ง ์์ฑํ๊ธฐ๋ ๋ฒ๊ฑฐ๋กญ๊ณ ์ฝ๊ธฐ์๋ ๋ณต์กํ ๋จ์ ์ด ์๋ค.
๋จ์ถ ํ๋กํผํฐ
ํ๋กํผํฐ ๊ฐ์ ๊ธฐ์กด ๋ณ์์์ ๋ฐ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ก ๋ค์ด๋ณด์.
function makeUser(name, age){
return{
name : name,
age : age
}
}
let user = makeUser('๋น๋ผ๊ฐฑ', '26')
alert(user.name) //๋น๋ผ๊ฐฑ
์ ์์์ ํ๋กํผํฐ๋ค์ ์ด๋ฆ๊ณผ ๊ฐ์ด ๋ณ์์ ์ด๋ฆ๊ณผ ๋์ผํ๋ค. ์ด์ ๊ฐ์ ๊ฒฝ์ฐ 'ํ๋กํผํฐ ๊ฐ ๋จ์ถ ๊ตฌ๋ฌธ'์ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ์งง๊ฒ ์ค์ผ ์ ์๋ค. `name : name` ๋์ `name`๋ง ์ ์ด์ฃผ์ด๋ ํ๋กํผํฐ๋ฅผ ์ค์ ํ ์ ์๋ ๊ฒ!
function makeUser(name, age) {
return {
name, // name: name ๊ณผ ๊ฐ์
age, // age: age ์ ๊ฐ์
address : '์์ธํน๋ณ์ ๋ฌด์จ๊ตฌ ๋ฌด์จ๋' // ์ผ๋ฐ ํ๋กํผํฐ์ ๋จ์ถ ํ๋กํผํฐ๋ฅผ ํจ๊ป ์ฌ์ฉํ ์๋ ์๋ค.
};
}
'dev > javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| web component API ์ฌ์ฉ๊ธฐ (1) _๊ทธ๊ฒ ๋ญ๋ฐ? (1) | 2022.07.17 |
|---|