๐ this๋?
this๋ ํจ์ ํธ์ถ ๋ฐฉ์์ ๋ฐ๋ผ this์ ๋ฐ์ธ๋ฉํ ๊ฐ์ฒด๊ฐ ๋์ ์ผ๋ก ๊ฒฐ์ ๋๋ค.
(์์ธ์ ์ผ๋ก, bind ํจ์๋ ํธ์ถ๊ณผ ๋ฌด๊ด์๊ฒ ๋ฌถ์ด์ ๊ณ ์ ์ํฌ ์ ์๋ค.)
ํธ์ถํ ๊ฐ์ฒด === this
๐ ํจ์ ํธ์ถ ๋ฐฉ์
<์๋ฌต์ ๋ฐ์ธ๋ฉ>
1. ํจ์(์ผ๋ฐํจ์, ์ ์ญํจ์, ์ธ๋ถํจ์, ๋ด๋ถํจ์(์ผ๋ฐ ๋ด๋ถํจ์, ๋ฉ์๋์ ๋ด๋ถํจ์, ์ฝ๋ฐฑํจ์ ๋ฑ)) ํธ์ถ
this๋ ์ ์ญ๊ฐ์ฒด(window)๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
2. ๋ฉ์๋ ํธ์ถ
this๋ ํด๋น ๋ฉ์๋์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
3. ์์ฑ์ ํจ์ ํธ์ถ
this๋ ์์ฑ์๋ก ์ธํด ์์ฑ๋ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
<๋ช ์์ ๋ฐ์ธ๋ฉ>
4. call, apply, bind ํธ์ถ
this๊ฐ ํจ์ ํธ์ถ์์ ๋ฐ๋ผ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค๋ฉด call, apply, bind๋ ํจ์๊ฐ ์ง์ ์คํ๋ฌธ๋งฅ์ ๊ฒฐ์ ํ๋ค.
call์ ํจ์๋ฅผ ํธ์ถํด ์คํํ๋ค. ํจ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ํ๋์ฉ ๋๊ธด๋ค.
apply๋ ํจ์๋ฅผ ํธ์ถํด ์คํํ๋ค. ํจ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐฐ์ด ํํ๋ก ๋๊ธด๋ค.
bind๋ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ด ์๋๋ผ this๊ฐ ๋ฐ์ธ๋ฉ๋ ์๋ก์ด ํจ์๋ฅผ ๋ง๋ค์ด ๋ฆฌํดํ๋ค.
๐ ์ผ๋ฐ ํจ์์์์ this VS ํ์ดํ ํจ์์์์ this
์ผ๋ฐ ํจ์์์์ this๋ ํจ์ ํธ์ถ ๋ฐฉ์์ ๋ฐ๋ผ this์ ๋ฐ์ธ๋ฉํ ๊ฐ์ฒด๊ฐ ๋์ ์ผ๋ก ๊ฒฐ์ ๋๋ค.
ํ์ดํ ํจ์์์์ this๋ ํญ์ ์์ ์ค์ฝํ์ this๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๋ฐ๋ผ์ this์ ๋ฐ์ธ๋ฉํ ๊ฐ์ฒด๊ฐ ์ ์ ์ผ๋ก ๊ฒฐ์ ๋๋ค. (์์ ์ค์ฝํ์ this๋ฅผ ๊ทธ๋๋ก ๋ฌผ๋ ค๋ฐ๊ธฐ ๋๋ฌธ์ ์ง์ ์ ์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.)
๐ use strict ๋ชจ๋์์์ this
ํจ์ ํธ์ถ์์ this๋ window๊ฐ ์๋ undefined๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
๐ ์ฐธ๊ณ ์๋ฃ
๐ก ๊ฐ์ด ๋ณด๋ฉด ์ข์ Post
'๐ > ใด JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] Axios ์ฌ์ฉํ์ฌ ์น์๋ฒ์ ํต์ ํ๊ธฐ (0) | 2021.03.07 |
---|---|
[JavaScript] AJAX / XMLHttpRequest, axios, fecth (0) | 2021.03.07 |
[JavaScript] ํด๋ก์ (Closure)๋? (0) | 2021.02.01 |
[JavaScript] ํธ์ด์คํ (Hoisting) ์ด๋? (0) | 2021.02.01 |
[JavaScript] ์คํ ์ปจํ ์คํธ(Execution Context)๋? (0) | 2021.01.31 |