๐ŸŒธ10์žฅ. ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด

โœ…10.1 ๊ฐ์ฒด๋ž€?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด(Object) ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๊ณ , ์›์‹œ๊ฐ’์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๊ฐ’์€ ๋ชจ๋‘ ๊ฐ์ฒด๋‹ค.
  • ์›์‹œํƒ€์ž…์€ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ๋‚˜ํƒ€๋‚ด์ง€๋งŒ ๊ฐ์ฒดํƒ€์ž…(object/reference type)์€ ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๊ตฌ์„ฑ

  • ์›์‹œ ๊ฐ’์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€(immutable)ํ•œ ๊ฐ’์ด์ง€๋งŒ, ๊ฐ์ฒดํƒ€์ž…์€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ(mutable)ํ•œ ๊ฐ’

  • ๊ฐ์ฒด๋Š” 0๊ฐœ ์ด์ƒ์˜ ํ”„๋กœํผํ‹ฐ๋กœ ๊ตฌ์„ฑ๋œ ์ง‘ํ•ฉ์ด๋ฉฐ, ํ”„๋กœํผํ‹ฐ๋Š” key:value๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’์€ ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ํ•จ์ˆ˜์ผ ๊ฒฝ์šฐ, ๋ฉ”์„œ๋“œ(method)๋ผ ๋ถ€๋ฅธ๋‹ค.

image
  • ํ”„๋กœํผํ‹ฐ : ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’

  • ๋ฉ”์„œ๋“œ : ํ”„๋กœํผํ‹ฐ(์ƒํƒœ ๋ฐ์ดํ„ฐ)๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘

์ธ์Šคํ„ด์Šค(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๊ฐ€์ง€๋‹ค.

  1. ๋งˆ์นจํ‘œ(.) ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• โ†’ ๋งˆ์นจํ‘œ ํ‘œ๊ธฐ๋ฒ•(dot notation)

  2. ๋Œ€๊ด„ํ˜ธ([...]) ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• โ†’ ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•(bracket notation)

์ฃผ์˜ํ•  ์ 

  • ๋Œ€๊ด„ํ˜ธ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ์—ฐ์‚ฐ์ž ๋‚ด๋ถ€์— ์ง€์ •ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ ํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ผ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•œ๋‹ค.

    • ๋ฌธ์ž์—ด ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹๋ณ„์ž๋กœ ํ•ด์„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ReferenceError ๋ฐœ์ƒ

  • ๊ฐ์ฒด์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

โœ…10.5 ํ”„๋กœํผํ‹ฐ ๋™์  ์ƒ์„ฑ & ์‚ญ์ œ

  • ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด, ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.

  • delete์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ…10.6 ES6์—์„œ ์ถ”๊ฐ€๋œ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ํ™•์žฅ ๊ธฐ๋Šฅ

ํ”„๋กœํผํ‹ฐ ์ถ•์•ฝ ํ‘œํ˜„

  • ํ”„๋กœํผํ‹ฐ ๊ฐ’์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ƒ์š”ํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ํ”„๋กœํผํ‹ฐ ํ‚ค๊ฐ€ ๋™์ผํ•œ ์ด๋ฆ„์ผ ๋•Œ ํ”„๋กœํผํ‹ฐ ํ‚ค๋ฅผ ์ƒ๋žต(property shorthand)ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„

  • ํ”„๋กœํผํ‹ฐ ํ‚ค๋ฅผ ๋ฌธ์ž์—ด/๋ฌธ์ž์—ด๋กœ ํƒ€์ž… ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋˜๋Š” ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•ด์„œ ๋™์ ์œผ๋กœ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฉ”์„œ๋“œ ์ถ•์•ฝ ํ‘œํ˜„

  • function ํ‚ค์›Œ๋“œ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํ•˜์ง€๋งŒ, ๋ฉ”์„œ๋“œ ์ถ•์•ฝ ํ‘œํ˜„์œผ๋กœ ์ •์˜ํ•œ ๋ฉ”์„œ๋“œ๋Š” ํ”„๋กœํผํ‹ฐ์— ํ• ๋‹นํ•œ ํ•จ์ˆ˜(ES5 ๋ฉ”์„œ๋“œ)์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.

Last updated