this๋ ํจ์๋ฅผ ํธ์ถํ ๊ฐ์ฒด์ด๋ค

๐ก this โก๏ธ๏ฝโ๏ฝthis๋ ์ด๋ค ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ํค์๋์ด๋ค ! ๊ทธ๋ฐ๋ฐ this๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๋ ์ํฉ์ ๋ฐ๋ผ ๋ณํ๋ค.
1. mainํจ์๋ฅผ ๋ง๋ค๊ณ this๋ฅผ ์ถ๋ ฅํด๋ณด์.
์ด๋ ๊ฒ main() ํจ์๋ฅผ ๋ง๋ค๊ณ ์คํ์์ผ ์ฃผ๋ฉด this๋ Window๊ฐ์ฒด๊ฐ ๋๋ค.
์ฆ, main() === Window.main()๊ณผ ๊ฐ์ ์๋ฏธ์ธ ๊ฒ์ด๋ค ๐
์ฐ๋ฆฌ๊ฐ ๋ง๋ main ํจ์๋ ์ ๋ค์ด์๋ค.
2. object๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ object์ main ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ this๋ฅผ ์ถ๋ ฅํด ๋ณด์.
3. object.main์ ๋ด๋ main2๋ฅผ ์ถ๋ ฅํด ๋ณด์.
main2 ํจ์๋ฅผ ํธ์ถํ ๊ฐ์ฒด๋ ๋ ์ด์ object๊ฐ ์๋๊ธฐ ๋๋ฌธ์ main2์ this๋ Window๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์์์ผํ ์ !! ์ this๋ ํจ์๊ฐ ์ ์๋ ์์น๋ ๋ฐฉ๋ฒ์ ์ํฅ๋ฐ์ง ์๋๋ค.
4. this๋ ํจ์๊ฐ ์ ์๋ ์์น๋ ๋ฐฉ๋ฒ์ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
๋ฐ๋ผ์ mainํจ์๋ฅผ ํธ์ถํ ๊ฐ์ฒด๋ ์ง์ ์ ์ผ๋ก ํธ์ถํ starObject์ด๊ธฐ ๋๋ฌธ์ this ๊ฐ์ starObject๊ฐ์ฒด๊ฐ ๋๋ค.
์ด๋ ๊ฒ ๋์ ์ผ๋ก ๋ฐ๋๋ this๊ฐ์ ์ถ์ ํ๊ฒ ๋๋ ์ผ์ ์ฝ๋๊ฐ ๋ณต์กํด์ง์๋ก ๊ท์ฐฎ์์ง ๊ฒ์ด๋ค ใ
๋ง์ฝ this๊ฐ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ์ฒด๋ก ๊ณ ์ ํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ๋ ๊น ?

์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ .bind()๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค !!
5. ๋ฐ์ธ๋ ๋ฉ์๋ ์ฌ์ฉํด์ this๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด ๊ณ ์ ํด ๋ณด๊ธฐ
bind์ ์ธ์๋ก ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ์ฒด๋ฅผ ๋ฃ์ด์ค๋ค.
์ด๋ ๊ฒ ํ๋ฉด mainBind๋ฅผ ์ด๋ป๊ฒ ํธ์ถํ๋ ์๊ด์์ด ๋๊ฐ์ด {name: 'hi'}๋ฅผ ์ถ๋ ฅํ ์ ์๋ค.
์ ์ด๋ ๊ฒ ๋๋ ๊ฒ์ผ๊น ?
๊ทธ ์ด์ ๋ ๋ฐ๋ก, binds๋ ์๋ก์ด ํจ์๋ฅผ ๋ฐํํด ์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
main.bind({name: 'hi'}); ๋ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๊ฐ์ฒด๋ฅผ this ๊ฐ์ผ๋ก ์ค์ ๋ ์๋ก์ด ํจ์๋ฅผ ๋ฐํํด ์ค๋ค.
๊ทธ ์๋ก์ด ํจ์๊ฐ mainBind์ ๋ค์ด๊ฐ์ ์ฐ๋ฆฌ๊ฐ mainBind๋ฅผ ํธ์ถํด ์ค ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์ฃผ์ํด์ผํ ์ !! ์ this๋ ์ด๋ฏธ ๋ฐ์ธ๋ ๋ ๊ฒ์ ๋ ๋ฐ์ธ๋ฉํด ์ค ์ ์๋ค.

๐ฉ๐ป๐ป ์ด๋ ๊ฒ this์ ๋ํด์ ์์๋ณด์๋ค. ์ด๋ฅผ ํตํด์ this์ ๋ํ ๊ฐ๋ ์ ๋ช ํํ ํ ์ ์์๊ณ , ์์ผ๋ก JavaScript ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋ ์ฃผ์ ๊น๊ฒ ์ ๊ทผํ ์ ์์ ๊ฒ ๊ฐ๋ค.
this๊ฐ ๊ฐ๋ฆฌํค๋ ๋์์ ๋ช ํํ๊ฒ ์ดํดํ๋ ๊ฒ์ด, ์ฝ๋์ ํ์ง์ ๋์ด๋ ๋ฐ ํฐ ๋์์ด ๋ ๊ฒ๊ฐ๋ค.
'๐ก ์์๋๋ฉด ์ข์ ๊ฒ๋ค > ๋ฉด์ ๋๋น' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก ํธ์๋ ๋ฉด์ ์ง๋ฌธ] - ๋ธ๋ผ์ฐ์ ๋ ์ด๋ป๊ฒ ๋์ํ๋๊ฐ (0) | 2024.10.10 |
---|---|
[TypeScript] - interface์ type alias์ ์ฐจ์ด์ (0) | 2024.09.30 |