๋ฐ์ํ
๐ ์ค๋ ํ ์ผ
โ๏ธ call, apply, bind ๋ฉ์๋ ์ฌ์ฉํด๋ณด๊ธฐ
this ๊ฐ์ ์ง์ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋๋ค์ธ call, apply, bind ๋ฉ์๋๊ฐ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ๋ ์ง ์์๋ฅผ ํตํด ๋ฐฐ์ ๋ค. ๋จ์ง this๋ฅผ ์ง์ ํ๋ ๊ฒ ๋ฟ๋ง ์๋๋ผ Spread Opeator์ ๋์ ํด์๋ ์ธ ์ ์๊ณ , ๋ฐฐ์ด์ด ์๋ ๋ฐ์ดํฐํ์ ์ ๋ฐฐ์ด๋ฉ์๋๋ฅผ ์ ์ฉํ๋ ๋๋ผ์ด ์ผ๊น์ง ๊ฐ๋ฅํ๋ค. ํนํ bind๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์์ฑํ ๋ ์ด๋ฒคํธ ๊ฐ์ฒด ๋์ ๋ค๋ฅธ ๊ฐ๋ ๋๊ฒจ์ค ์ ์๋ค๊ณ ํด์ ์ ์ ๋ง๋ ํธ์ํ๋ฌ์ ์ ์ฉํด๋ณด๋ ค ํ๋ค. ์ ์์๋๋ค๋ฉด ๊ต์ฅํ ์ ์ฉํ๊ฒ ์ฐ์ผ ๊ฒ ๊ฐ์์ ๋ ์ด๋์ ์ฐ์ผ ์ ์๋์ง๋ ๋ ์์๋ณด๊ณ , ๊ผญ ๋ด์ผ ๋ธ๋ก๊น ์ ํด๋ฌ์ผ๊ฒ ๋ค..
โ๏ธ ์์ ๋ฅผ ํตํด this์ ๋ณํ ์์๋ณด๊ธฐ
this๋ ์คํ ์ปจํ ์คํธ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๊ฒฐ์ ๋๋๋ฐ, ์ด ์คํ ์ปจํ ์คํธ๊ฐ ๋๋ฌด ๋ค์ํด์ ๋ง๋ก ๋ฐฐ์ฐ๋ ๊ฒ๋ง์ผ๋ก๋ ์๋ฟ์ง ์์๋ค. ์๋ฅผ ๋ค์ด ์ ์ญ์ด๋ ํจ์๋ก ๋ถ๋ ธ์ ๋ this๋ ์ ์ญ๊ฐ์ฒด๊ฐ ๋์ง๋ง, ๋ฉ์๋๋ ์ฝ๋ฐฑํจ์๋ก ํธ์ถ ๋์์ ๋๋ ํธ์ถ ์ฃผ์ฒด๊ฐ this๊ฐ ๋๋ค. ๋ ์์ฑ์ ํจ์๋ก ํธ์ถ๋๋ฉด ์ ์ธ์คํด์ค ๊ฐ์ฒด๊ฐ this๊ฐ ๋๊ธฐ๋ ํ๋ค. ํท๊ฐ๋ฆด ์ ์๋ ๊ฐ๋ ์ด์๋๋ฐ koans ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๋ค์ํ ์ํฉ์์์ this๊ฐ๋ค์ ๋น๊ตํด๋ณผ ์ ์์๋ค.
โ๏ธ ์คํ ์ปจํ ์คํธ ๊ฐ๋ ์ ๋ฆฌ
this์ ๋ํด ๊ณต๋ถํ๋ค๊ฐ ์ธ๊ธ๋์ด์ ์์๋ณด๊ฒ ๋์๋๋ฐ, ์คํ ์ปจํ ์คํธ๋ ํด๋ก์ , ์ค์ฝํ, ํธ์ด์คํ , this ๋ฑ ์ง๊ธ๊น์ง ๋ฐฐ์ ๋ Javascript์ ํ์์ ์ธ ๊ฐ๋ ๋ค์ ์ดํดํ๋ ๊ธฐ๋ฐ์ด ๋๋ ๊ฐ๋ ์ด๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ๋๋ถ์ ํธ์ด์คํ ์ '๋์ด์ฌ๋ฆฌ๋' ๋์์ด ์ ํํ ์ด๋ค ์๋ฆฌ๋ก ์๋ํ๋ ๊ฒ์ด์๋ ์ง๋ ์๊ฒ ๋์๋ค.
๐๊ธฐ์ตํ ๊ฒ
โ๏ธ ์ํฉ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ this๊ฐ
์ ์ญ ๋ณ์ : ์ ์ญ ๊ฐ์ฒด
ํจ์ ํธ์ถ : ์ ์ญ ๊ฐ์ฒด
๋ฉ์๋ ํธ์ถ : ํธ์ถ ์ฃผ์ฒด (๋ฉ์๋๋ช ์ ๊ฐ์ฒด)
์ฝ๋ฐฑ ํจ์ : ํธ์ถ ์ฃผ์ฒด (์ ์ด๊ถ ๊ฐ์ง ํจ์, ์ ์X์ ์ ์ญ ๊ฐ์ฒด)
์์ฑ์ ํจ์ : ์ ์ธ์คํด์ค ๊ฐ์ฒด
call, apply ํธ์ถ : ์ฒซ ์ธ์
โ๏ธ setTimeout๊ณผ this
setTimeout์ ํญ์ this๋ก window๊ฐ์ฒด๋ฅผ ๋ฐ์ธ๋ฉํ๋ค!
โ๏ธ ํ์ดํํจ์(=>)์ this
ํ์ดํ ํจ์๋ ํธ์ถ ์ this ๋ฐ์ธ๋ฉ์ ํ์ง ์๋๋ค. ๋์ ์ ๊ทผ ์ ์ค์ฝํ ์ฒด์ธ์์์ ์์ ๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด this์ ์ ๊ทผํ๋ค.
โ๏ธ NVM ๋ฒ์ ์ด๋ ์ฝ๊ฒํ๊ธฐ
nvm run (๋ฒ์ ) (ํ์ผ๋ช ) ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด nvm use ์์ด ๋ฐ๋ก ๋ค๋ฅธ ๋ฒ์ ์ ์ด์ฉํ ์ ์๋ค! ๋ฒ์ ์ ์์ ๋ณ๊ฒฝํ๋๊ฑด ์๋๊ณ ํ๋กฌํํธ๋ง ๋ค๋ฅธ ๋ฒ์ ์ผ๋ก ๋์ฐ๋ ๋ฐฉ๋ฒ์ด๋ค.
โ๏ธ ๋ฌธ์์ด์ call, apply ์ ์ฉ ์ ์ฃผ์์ฌํญ
๋ฌธ์์ด๋ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ call, apply๋ฉ์๋๋ก ๋ฐฐ์ด ๋ฉ์๋๋ค์ ์ ์ฉํ ์ ์๋ค. ํ์ง๋ง length ์์ฑ์ด ์ฝ๊ธฐ์ ์ฉ์ด๋ผ ์๋ณธ์ ์ํฅ์ ์ฃผ๋ push, pop, shift, unshift, splice๊ฐ์ ๋ฉ์๋๋ฅผ ์ฐ๋ฉด ์๋ฌ๊ฐ ๋๋ค. ๊ทธ๋ฆฌ๊ณ concat์ฒ๋ผ ๋ฐฐ์ด๋ง ๋์์ผ๋ก ํ๋ ๋ฉ์๋๋ฅผ ์ ์ฉํ๋ฉด ์๋ฌ๋ ์๋์ง๋ง ์์๊ณผ ๋ค๋ฅธ ์ด์ํ ๊ฒฐ๊ณผ๊ฐ ๋์๋ค.
๐ ๋ ๊ณต๋ถํ ๊ฒ
โ๏ธ ํธ์ํ๋ฌ์ bind ๋ฉ์๋ ์ ์ฉ
bind ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ์ด๋ฒคํธ ๊ฐ์ฒด ๋ง๊ณ ๋ค๋ฅธ ๊ฐ์ ์ ๋ฌํ ์ ์๋ค๊ณ ํด์, ์ ์ ๋ง๋ค์๋ ํธ์ํ๋ฌ์ ์ ์ฉํ ์ ์์ง ์์๊น ํ๋ ์๊ฐ์ด ๋ค์๋ค. ๋์ ์ผ๋ก ์์ฑ๋๋ ๋ฒํผ์ ๊ตฌํํ๋ ๋ถ๋ถ์์ ์๋๋ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด ๋ค๋ฅธ ๊ฐ๋ค์ ์ ๋ฌํ์๋๋ฐ, ๋ฐ๋ณต๋ฌธ ๋์ ์ bind๋ฅผ ์จ์ ๊ณ ์ณ๋ณด๋๋ก ํด์ผ๊ฒ ๋ค.
โ๏ธ module.exports์ global์ ์ฐจ์ด
โ๏ธ this ๋ธ๋ก๊น ๋ง๋ฌด๋ฆฌ
๋ฐ์ํ
'Daily > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
210114_TIL (OOP์ ํจ๊ปํ ํ๋ฃจ..) (0) | 2021.01.15 |
---|---|
210113_TIL (ESLint๋ก ๋ฆฌํฉํ ๋งํ๊ธฐ, Node.js๋ก ์๋๋ด ๋ง๋ค๊ธฐ) (0) | 2021.01.14 |
210111_TIL (node.js, git์ ์ต์ํด์ง๊ธฐ) (0) | 2021.01.12 |
210109_TIL (undefined ์ ๋๋ก ์๊ธฐ) (0) | 2021.01.10 |
210108_TIL (๊ผฌ๋ฆฌ์ฌ๊ท, ์๊ณ ๋ฆฌ์ฆ ๊ธฐ์ด) (0) | 2021.01.09 |
๋๊ธ