22.08.25 ์์ ์ ๋ค์ผ๋ฉฐ ๊ณต๋ถํ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ์์ต๋๋ค ๐
ํผ๋๋ฐฑ์ ์ธ์ ๋ ํ์์ ๋๋ค! ๐
๊ทธ๋์ ํจ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ ์ฌ์ฉํ๋ฉด, ์ฌ์ฉ๋ ์ด๋ ค์์ง๊ณ ์ฑ๋ฅ๋ ์ข์ง ์๊ธฐ ๋๋ฌธ์,
ES6๋ถํฐ๋ ํน์ ํ ์ํฉ๊ณผ ๋ชฉ์ ์ ๋ง๊ฒ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ธฐ ์ํด ๊ตฌ๋ถํ๊ฒ ๋จ!
[[construct]]
๋ฅผ ๊ฐ์ง ํ์๊ฐ ์๊ณ , ๊ทธ๋์ ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ๊ธฐ ๋๋ฌธ์. ๊ทธ๋์ ์ผ๋ฐ ํจ์๋ ํ๋กํ ํ์
์ ๊ฐ์ง ์ด์ ๊ฐ ์์ผ๋ this
๊ฐ ์๋ ํ์ดํ ํจ์ ์ฌ์ฉํด์ผ ํจ.super
ํค์๋๋ฅผ ๊ฐ์ง์ง ์๋ ์ด์ super
ํค์๋๋ ๋ฉ์๋ ๋ด์์๋ง ์๋ฏธ๊ฐ ์๊ธฐ ๋๋ฌธ์.arguments
๊ฐ์ฒดarguments
๋ฅผ ์ฐธ์กฐํจarguments
๊ฐ ์๋๋ผ ์์ ํจ์์ arguments
๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์arguments
์ ์ฌ์ฉ์ ํจ์ ํํ์์์ ํด์ผ ํจ โ ํ์ดํ ํจ์์์๋ Rest ํ๋ผ๋ฏธํฐ(โฆ
) ์ฌ์ฉํ์ฌ ๊ฐ๋ณ ์ธ์ ํจ์ ๊ตฌํthis
๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ก ๊ทธ ์ธ์คํด์ค์ ๋ฐ์ธ๋ฉ์ ์์ผ์คthis
๋ ๋ฉ์๋ ๋ด๋ถ์์๋ง ์๋ฏธ๊ฐ ์์this
๋ ๋ฌด์๋ฏธํจ!this
๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ง ์์ ๊ฒ์ด์ง, ๋ฉ์๋ ๋ด๋ถ์์ this
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๊ด์์this
๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐwindow
๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด ์ ํํจ.this
๋ constructor
์ this
๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ์ค๊ณํจcall
์ ํตํด ๋ณต์กํ๊ฒ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์.length
์ ๋ณด ํ์!!๐ค ADT
- ์ถ์์ ๋ฐ์ดํฐ ํ์
- ํ, ํธ๋ฆฌ, ์คํ, ํ ๋ฑ
๋ฐฐ์ด์ ์ฌ์ฉํ๋ ์ํฉ(์ฅ๋จ์ )
(1) ์์ ์ ๊ทผ(์์์ ์์๋ฅผ ์ฐพ๋ ๊ฒ)์ ์ต์ ํ
์ฒซ ๋ฒ์งธ ์์๋ ์ธ ๋ฒ์งธ ์์๋ ๋์ผํ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง(O(n))
โ ์ ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ + (๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ * ์ธ๋ฑ์ค)
โ ์ ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ ์์, ์ธ๋ฑ์ค๋ ๋ณ์
(2) ์์์ ์ฝ์
, ์ญ์ ์๋ ์ข์ง ์์
์ค๊ฐ์ ์์๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ ๊ทธ ์๋ค์ ์์๊น์ง ๋ค ์ฎ๊ฒจ์ผ ํ๊ธฐ ๋๋ฌธ
โ ๊ทธ๋ ๋ค๋ฉด..! ๋ฐฐ์ด์ ์ด๋ค ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋๊ฐ?
๋ฐ์ดํฐ ์ถ๊ฐ, ์ญ์ ํ๋ ์ผ์ด ์ ๊ณ ์ ๊ทผ ๋ฐ ์กฐํํ๋ ์ผ๋ง ๋ง์ ๊ฒฝ์ฐ์ ์ฌ์ฉ
getOwnPropertyDescriptors
๋ก ํ์ธํด๋ณด๋ฉด ์ ์ ์์[ 1, '2', true]
โ ๊ฐ์ฒด์ ๋ ๊ฐ๊น์, ์ด๊ฒ์ [1, 2, 3]
์ผ๋ก ๋ง๋ค๋ฉด ๋ ๋น ๋ฅด๊ฒ ๋์ํจ๐ก ํ์ค ์ธ๊ณ์ ๋ฐฐ์ด ์์๋
[1, 2, 3 ]
์ฒ๋ผ ๊ฐ๋จํ ํํ๊ฐ ์๋๋ผ ์์์ ๊ฐ์ฒด๊ฐ ๋ค์ด๊ฐ ์๋ ํํ๊ฐ ๋ ๋ง๊ณ , ์ด๋ฌํ ์์๋ ์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ด ์์
๊ทธ๋์, ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ ๋ณด(๋ฐ์ดํฐ)๋ ์์์ ์ผ๋ก ์ ์ฅ๋์ด์ผ ํจ
โ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ ๊ฒ์ ์์์ ์ด์ง ์์(์ ์ ๋๋ฉด ๋ ์๊ฐ)
๊ทธ๋์, ๋ฐ์ดํฐ๋ ํ๋ ๋์คํฌ์ ํ์ผ๋ก ์์ฑํจ์ผ๋ก์จ ์์์ ์ผ๋ก ์ ์ฅ๋ ์ ์์!
์ด๋ฌํ ์ญํ ์ ์ํํ๋ ๊ฒ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์.
์ ์์ ๊บผ๋ ์์์ ์ผ๋ก ์ ์ฅ๋จ. ๊ฒฐ๊ตญ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ทผ๋ณธ์ ์ญํ ์ ํ์ผ ์์ฑ!
โ ๊ฒฐ๊ตญ ํ๋ก ํธ์๋์์ ์๋ฒ์ ์์ฒญํ์ฌ ์ ๋ฌ ๋ฐ์ ์ ๋ณด์ ๋ชฉ์ ์ ํ๋ฉด ๊ตฌํ(๋ ๋๋ง)์ ์ํ
๊ฒ์. ๋ฐ์ดํฐ๋ ๋ ๋๋ง์ ์ฌ๋ฃ, HTML์ด ์์ด์ผ ์ด๋ฅผ ๊ทธ๋ฆด ์ ์์, ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋
HTML์ DOM์ ์ ์กฐ์ํ ์ ์์ด์ผ ํจ
๋ฐฐ์ด์ ์กฐ์ํ ์ผ์ด ์์ ๋ ๊ณ ์ฐจํจ์๋ฅผ ์ฌ์ฉํด์ผ ํจ
์๋ณธ ๋ฐฐ์ด์ ์กฐ์ํ๋ ๋ฐฉ๋ฒ์ด ์ ์ข์ ์ด์
โ ์ฝ๋์ ๋ผ์ธ ์๊ฐ ๋ง์์ก์ ๋ ๊ทธ ์๋ณธ ๋ฐฐ์ด์ ์ถ์ ํ๋ ๊ฒ์ด ํ๋ค์ด์ง.
๊ทธ๋ ๋ค๋ฉด..? ๋ฐ๋ ๋ฐฐ์ด์ ์ฃผ์ ๊ฐ์ ์๋กญ๊ฒ ํ ๋นํ๋ฉด ์ถ์ ํ ํ์๊ฐ ์์
โ ์๋ณธ์ ํผ์์ํค์ง ์๊ณ ๋ถ๋ณ์ฑ์ ์ ์ง์ํฌ ๊ฒ!!!!
์ถ๊ฐ๋ก, ํจ์ ๋ด๋ถ์์ ์ง์ญ ๋ณ์๋ฅผ ์งง๊ฒ ๋ค๋ฃจ๊ณ ๋ฐํํ๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํด๋ ๋ฌด๋ฐฉํ์ง๋ง, ์ฌ๋งํ๋ฉด ์๋ณธ ๋ฐฐ์ด์ ํผ์์ํค์ง ์๋ ๋ฐฉ๋ฒ์ ์งํฅํด์ผ ํจ. ๋ฌผ๋ก , ๊ฐ์ฒด๋ ๋ง์ฐฌ๊ฐ์ง!
๋ฐฐ์ด์์ ๊ฐ์ฅ ์ค์ํ ๋ฉ์๋ : map
, filter
โ ๋ง์ด ์ฌ์ฉํ๊ณ ์ต์ํด์ ธ์ผ ํจ!!!!
reduce
๋ ๊ฐ๋
์ฑ์ด ์ข์ง ์๊ธฐ ๋๋ฌธ์ ์ตํ์ ์๋จ(map
, filter
, some
, every
๋ฑ์ผ๋ก ํด๊ฒฐ์ด ์ ๋๋ ๊ฒฝ์ฐ)์ผ๋ก ์ฌ์ฉํ๊ธฐ.
map
์ ์ค์ํ ํน์งmap
์ ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋๊ฐ?map
์ ๋์ ๊ณผ์ map
์ ์ฝ๋ฐฑ ํจ์๋ ๋ฐ๋์ return ๊ฐ์ด ์์ด์ผ ํ๊ณ , ๊ทธ return ๊ฐ์ผ๋ก ์๋ก์ด ๋ฐฐ์ด ์์๋ฅผ ๋ฐํํจ ๋ฌด์กฐ๊ฑด ์ฝ๋ฐฑ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์์ ๊ฐ, ์ธ๋ฑ์ค, this
๋ฅผ ๋๊ฒจ์ฃผ๊ฒ ๋๋๋ฐ, ๊ทธ ์ ๋ฌ ๋ฐ์ ์ธ์ ์ค ์ฌ์ฉํ๊ณ ์ถ์ ๊ฐ์์ ๋ฐ๋ผ ์ฝ๋ฐฑ ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํด์ฃผ๋ฉด ๋จ.map
์ ์ฌ์ฉํ๋ ์ด์ filter
๋ฅผ ์ฌ์ฉํ๋ ์ด์ reduce
๋ฅผ ์ฌ์ฉํ๋ ์ด์