๐ธ10์ฅ. ๊ฐ์ฒด ๋ฆฌํฐ๋ด
โ
10.1 ๊ฐ์ฒด๋?
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด(Object) ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๊ณ , ์์๊ฐ์ ์ ์ธํ ๋๋จธ์ง ๊ฐ์ ๋ชจ๋ ๊ฐ์ฒด๋ค.์์ํ์ ์
ํ๋์ ๊ฐ๋ง ๋ํ๋ด์ง๋ง ๊ฐ์ฒดํ์ (object/reference type)์๋ค์ํ ํ์ ์ ๊ฐ์ ํ๋์ ๋จ์๋ก ๊ตฌ์ฑ์์ ๊ฐ์
๋ณ๊ฒฝ ๋ถ๊ฐ(immutable)ํ ๊ฐ์ด์ง๋ง, ๊ฐ์ฒดํ์ ์๋ณ๊ฒฝ ๊ฐ๋ฅ(mutable)ํ ๊ฐ๊ฐ์ฒด๋ 0๊ฐ ์ด์์ ํ๋กํผํฐ๋ก ๊ตฌ์ฑ๋ ์งํฉ์ด๋ฉฐ, ํ๋กํผํฐ๋ key:value๋ก ๊ตฌ์ฑ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ฐ์ ํ๋กํผํฐ ๊ฐ์ด ๋ ์ ์๋๋ฐ, ํ๋กํผํฐ ๊ฐ์ด ํจ์์ผ ๊ฒฝ์ฐ,
๋ฉ์๋(method)๋ผ ๋ถ๋ฅธ๋ค.

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