๐ธ10์ฅ. ๊ฐ์ฒด ๋ฆฌํฐ๋ด
Last updated
Last updated
์์ํ์
์ ํ๋์ ๊ฐ
๋ง ๋ํ๋ด์ง๋ง ๊ฐ์ฒดํ์
(object/reference type)์ ๋ค์ํ ํ์
์ ๊ฐ์ ํ๋์ ๋จ์
๋ก ๊ตฌ์ฑ
์์ ๊ฐ์ ๋ณ๊ฒฝ ๋ถ๊ฐ(immutable)
ํ ๊ฐ์ด์ง๋ง, ๊ฐ์ฒดํ์
์ ๋ณ๊ฒฝ ๊ฐ๋ฅ(mutable)
ํ ๊ฐ
๊ฐ์ฒด๋ 0๊ฐ ์ด์์ ํ๋กํผํฐ๋ก ๊ตฌ์ฑ๋ ์งํฉ์ด๋ฉฐ, ํ๋กํผํฐ๋ key:value๋ก ๊ตฌ์ฑ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ฐ์ ํ๋กํผํฐ ๊ฐ์ด ๋ ์ ์๋๋ฐ, ํ๋กํผํฐ ๊ฐ์ด ํจ์์ผ ๊ฒฝ์ฐ, ๋ฉ์๋(method)
๋ผ ๋ถ๋ฅธ๋ค.
ํ๋กํผํฐ : ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฐ
๋ฉ์๋ : ํ๋กํผํฐ(์ํ ๋ฐ์ดํฐ)๋ฅผ ์ฐธ์กฐํ๊ณ ์กฐ์ํ ์ ์๋ ๋์
๊ฐ์ฒด๋ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ํฌํจํ ๊ฐ๋
ํด๋์ค๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ ํ๋ฆฟ์ ์ญํ ์ ํ๊ณ , ์ธ์คํด์ค๋ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด ์ค์ ๋ก ์กด์ฌํ๋ ๊ฒ์ ๋งํ๋ค.
๊ฐ์ฒด ๋ฆฌํฐ๋ด (๊ฐ์ฅ ์ผ๋ฐ์ )
Object ์์ฑ์ ํจ์
์์ฑ์ ํจ์
Object.create ๋ฉ์๋
ํด๋์ค+(ES6)
๊ฐ์ฒด ๋ฆฌํฐ๋ด
์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ๊ธฐ๋ฒ
์ด๋ค.
์ค๊ดํธ( {...}
) ๋ด์ 0๊ฐ ์ด์์ ํ๋กํผํฐ๋ฅผ ์ ์ํ๋ค.
๋ณ์์ ํ ๋น๋๋ ์์
์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ํด์ํด ๊ฐ์ฒด๋ฅผ ์์ฑ
๋ชจ๋ ํจ์๋ฅผ ์ด์ฉํด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ํจ์ ๊ณต๋ถํ ์ดํ์ ๋ค์ ์ดํด๋ณผ ์์
ํ๋กํผํฐ ํค(key)
: ๋น ๋ฌธ์์ด์ ํฌํจํ๋ ๋ชจ๋ ๋ฌธ์์ด(string)
๋๋ ์ฌ๋ฒ(symbol) ๊ฐ
ํ๋กํผํฐ ๊ฐ(value)
: ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ฐ
์๋ณ์ ๋ค์ด๋ฐ ๊ท์น์ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ, (์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ ํจํ ์ด๋ฆ์ธ ๊ฒฝ์ฐ) : ๋ฐ์ดํ( '' or "")
๋ฅผ ์๋ตํ ์ ์๋ค.
์ฆ, ๋ฐ๋๋ก ์๋ณ์ ๋ค์ด๋ฐ ๊ท์น์ ๋ฐ๋ฅด์ง ์๋ ์ด๋ฆ์๋ ๋ฐ๋์ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
๋ง์ฝ last-name์ ๋ฐ์ดํ๋ฅผ ์ ๊ฑฐํ๋ฉด, SyntaxError: Unexpected token '-'
์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
ํ๋กํผํฐ ํค๋ก ์ฌ์ฉํ ํํ์์ ๋๊ดํธ([...]
)๋ก ๋ฌถ์ผ๋ฉด, ํ๋กํผํฐ ํค๋ฅผ ๋์ ์ผ๋ก ์์ฑ
ํ ์๋ ์๋ค.
ํ๋กํผํฐ์ ๋ฌธ์์ด์ด๋ ์ฌ๋ฒ ๊ฐ ์ธ์ ๊ฐ์ ์ฌ์ฉํ๋ฉด ์๋ฌต์ ํ์
๋ณํ
์ ํตํด ๋ฌธ์์ด์ด ๋๋ค.
var, function๊ณผ ๊ฐ์ ์์ฝ์ด๋ฅผ ํ๋กํผํฐ ํค๋ก ์ฌ์ฉํด๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค. (ํ์ง๋ง ๊ถ์ฅ X)
์ด๋ฏธ ์กด์ฌํ๋ ํ๋กํผํฐ ํค๋ฅผ ์ค๋ณต ์ ์ธ
ํ๋ฉด ๋์ค์ ์ ์ธํ ํ๋กํผํฐ๊ฐ ๋จผ์ ์ ์ธํ ํ๋กํผํฐ๋ฅผ ๋ฎ์ด์ด๋ค
. ( ์๋ฌ ๋ฐ์ํ์ง ์์ )
ํ๋กํผํฐ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์๋ 2๊ฐ์ง๋ค.
๋ง์นจํ(.)
ํ๋กํผํฐ ์ ๊ทผ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ โ ๋ง์นจํ ํ๊ธฐ๋ฒ(dot notation)
๋๊ดํธ([...])
ํ๋กํผํฐ ์ ๊ทผ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ โ ๋๊ดํธ ํ๊ธฐ๋ฒ(bracket notation)
๋๊ดํธ ํ๋กํผํฐ ์ ๊ทผ ์ฐ์ฐ์ ๋ด๋ถ์ ์ง์ ํ๋ ํ๋กํผํฐ ํค๋ ๋ฐ๋์ ๋ฐ์ดํ๋ก ๊ฐ์ผ ๋ฌธ์์ด
์ด์ด์ผ ํ๋ค.
๋ฌธ์์ด ํํ๊ฐ ์๋๋ฉด, ์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋ณ์
๋ก ํด์ํ๊ธฐ ๋๋ฌธ์ ReferenceError
๋ฐ์
๊ฐ์ฒด์ ์กด์ฌํ์ง ์๋ ํ๋กํผํฐ
์ ์ ๊ทผํ๋ฉด undefined
๋ฅผ ๋ฐํํ๋ค.
์กด์ฌํ์ง ์๋ ํ๋กํผํฐ์ ๊ฐ์ ํ ๋นํ๋ฉด, ํ๋กํผํฐ๊ฐ ๋์ ์ผ๋ก ์์ฑ๋๋ค.
delete
์ฐ์ฐ์๋ฅผ ํตํด ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์ญ์ ํ ์ ์๋ค.
ํ๋กํผํฐ ๊ฐ์ผ๋ก ๋ณ์๋ฅผ ์์ํ๋ ๊ฒฝ์ฐ ๋ณ์ ์ด๋ฆ๊ณผ ํ๋กํผํฐ ํค๊ฐ ๋์ผํ ์ด๋ฆ์ผ ๋ ํ๋กํผํฐ ํค๋ฅผ ์๋ต(property shorthand
)ํ ์ ์๋ค.
ํ๋กํผํฐ ํค๋ฅผ ๋ฌธ์์ด/๋ฌธ์์ด๋ก ํ์ ๋ณํํ ์ ์๋ ๊ฐ์ผ๋ก ํ๊ฐ๋๋ ํํ์์ ์ฌ์ฉํด์ ๋์ ์ผ๋ก์์ฑํ ์ ์๋ค.
function ํค์๋๋ฅผ ์๋ตํ ์ ์๋ค.
ํ์ง๋ง, ๋ฉ์๋ ์ถ์ฝ ํํ
์ผ๋ก ์ ์ํ ๋ฉ์๋๋ ํ๋กํผํฐ์ ํ ๋นํ ํจ์(ES5 ๋ฉ์๋)
์๋ ๋ค๋ฅด๊ฒ ๋์ํ๋ค.
๋ฐ๋์ ์ ๋ฐ๋ผ์ผ ํ๋ ๊ฒ์ ์๋๋ค.