๋ด๊ฐ ๋งํ ๋์ '๋'์ ์น๊ตฌ๊ฐ ์๊ธฐ์๊ธฐ๋ฅผ ํ ๋์ '๋'๋ ํํ์ ๊ฐ์ง๋ง ๋ํ๋ด๋๊ฒ ์๋ก ๋ค๋ฅด๋ค. ์ด์ ๋น์ทํ๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ์์ ํํ์ ๊ฐ์ง๋ง ์ํฉ์ ๋ฐ๋ผ ๊ฐ์ด ๋ฌ๋ผ์ง๋ ๊ฐ์ด๋ค.
this ๋ ์์ ์ด ์ํ ๊ฐ์ฒด ๋๋ ์์ ์ด ์์ฑํ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ์๊ธฐ ์ฐธ์กฐ ๋ณ์๋ค. this ๋ฅผ ํตํด ์์ ์ด ์ํ ๊ฐ์ฒด ๋๋ ์์ ์ด ์์ฑํ ์ธ์คํด์ค์ ํ๋กํผํฐ๋ ๋ฉ์๋๋ฅผ ์ฐธ์กฐํ ์ ์๋ค.
this๋ ํด๋น ๊ฐ์ด ๋ค์ด์๋ ํจ์๊ฐ ์ด๋ป๊ฒ ์คํ๋๋์ ๋ฐ๋ผ ๊ฐ์ด ๊ฒฐ์ ๋๋ค. ์ฆ ํด๋น ํจ์๋ฅผ ์คํํ๋ ๋ถ๋ถ์ ์ฐพ์์ผ this ๊ฐ์ ํ๋จ์ด ๊ฐ๋ฅํ๋ค.
this ๊ฐ ๊ฐ๋ฅดํค๋ ๊ฐ, ์ฆ this ๋ฐ์ธ๋ฉ์ ํจ์ ํธ์ถ ๋ฐฉ์์ ์ํด ๋์ ์ผ๋ก ๊ฒฐ์ ๋๋ค.
๋ฐ์ธ๋ฉ์ด๋ ์๋ณ์์ ๊ฐ์ ์ฐ๊ฒฐํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค. this ๋ฐ์ธ๋ฉ์ this์ this๊ฐ ๊ฐ๋ฆฌํฌ ๊ฐ์ฒด๋ฅผ ๋ฐ์ธ๋ฉํ๋ ๊ฒ์ด๋ค.
Regular function call์ด๋ผ๊ณ ๋ ํจ. ๊ทธ๋ฅ ํจ์๋ฅผ ์ผ๋ฐ์ ์ผ๋ก ์คํํ๋ ๋ฐฉ์์.
function zmoon () {
console.log(this);
}
zmoon();
๊ทธ๋ฅ ๋ณ๋ค๋ฅผ๊ฒ ์์ด ์ผ๋ฐ์ ์ผ๋ก ํจ์๋ฅผ ์คํํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์.
์ด๋ด๊ฒฝ์ฐ this๋ global object๋ก ์ ํด์ ธ ์๋ค.
global object๋ ์๋ฆฌ๋ ๋ง์ฝ ๋ธ๋ผ์ฐ์ ์์์ ์์ค๋ฅผ ์คํ์ํจ๋ค๋ฉด window ๊ฐ์ฒด๋ผ๋ ์๋ฆฌ๋ค.
- ๋ฉ์๋ ๋ด์์ ์ ์ํ ์ค์ฒฉ ํจ์๋ ์ผ๋ฐ ํจ์๋ก ํธ์ถ๋๋ฉด ์ค์ฒฉ ํจ์ ๋ด๋ถ์ this์๋ ์ ์ญ ๊ฐ์ฒด๊ฐ ๋ฐ์ธ๋ฉ๋๋ค.
- ์ฝ๋ฐฑ ํจ์๊ฐ ์ผ๋ฐ ํจ์๋ก ํธ์ถ๋๋ ์ฝ๋ฐฑ ํจ์ ๋ด๋ถ์ this์ ์ ์ญ ๊ฐ์ฒด๊ฐ ๋ฐ์ธ๋ฉ๋๋ค. ์ฆ ์ด๋ ํ ํจ์๋ผ๋ ์ผ๋ฐ ํจ์๋ก ํธ์ถ๋๋ฉด this์ ์ ์ญ ๊ฐ์ฒด๊ฐ ๋ฐ์ธ๋ฉ๋๋ค.ในs
- this๋ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ ๋ฉ์๋๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํ ์๊ธฐ ์ฐธ์กฐ ๋ณ์์ด๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฒด์ ๋ฉ์๋ ๋ด๋ถ ๋๋ ์์ฑ์ ํจ์ ๋ด๋ถ์์๋ง ์๋ฏธ๊ฐ ์๋ค. ๋ฐ๋ผ์ ์๊ฒฉํ ์ฝ๋ ์คํ ํ๊ฒฝ์ธ strict mode๊ฐ ์ ์ฉ๋ ์ผ๋ฐ ํจ์ ๋ด๋ถ์ this์๋ undefined๊ฐ ๋ฐ์ธ๋ฉ๋๋ค. ์ผ๋ฐ ํจ์ ๋ด๋ถ์์ this๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- this๋ ์ด๋์๋ ์ง ์ฐธ์กฐ ๊ฐ๋ฅํ๋ค. ์ ์ญ์์ this๋ ์ ์ญ ๊ฐ์ฒด window๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
ํจ์๋ฅผ ํ๋กํผํฐ ๊ฐ์ผ๋ก ํ ๋นํ์ฌ ํธ์ถ. .
์์์๋ ๊ฐ์ฒด๊ฐ this์ ๊ฐ์ผ๋ก ์ค์ ๋์ด ์คํ๋จ
๋ฉ์๋ ๋ด๋ถ์์ this๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅดํค๊ธฐ ๋๋ฌธ
ํด๋น ๋ฉ์๋๊ฐ ์ค์ ํด๋์ this๊ฐ(์ธ์)์ด this๊ฐ์ผ๋ก ์ค์ ๋จ.
call์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋ ์ธ์์ ์๊ฐ ์ ํด์ ธ์์ง์์์ ์ฐ๋ฆฌ๊ฐ ๋๊ฒจ์ฃผ๊ณ ์ถ์๋๋ก ๋๊ฒจ์ฃผ๋ฉด ๋จ
apply๋ ํญ์ ์ธ์๋ฅผ ๋๊ฐ๋ง ๋ฐ์
bind๋ ๋ฐ๋ก ์คํ์ ์๋๊ณ this๊ฐ๋ง ์ค์ ์ ํด์ค
new๋ฅผ ๋ถ์ฌ ํจ์๋ฅผ ์คํํ๋ฉด, this์๋ ์๋ก์ด ๋น ๊ฐ์ฒด๊ฐ ์ง์ ๋ผ์ ํจ์๊ฐ ์คํ๋๋ค.
๋ํ new๋ฅผ ์จ์ ํจ์๋ฅผ ์คํํ๋ฉด ๊ทธ ํจ์์ return์ด ์์๋๋ผ๋, return this ์ฝ๋๊ฐ ์์์ ์คํ๋๋ค
new๋ฅผ ์จ์ ์คํํ๋ ํจ์๋ค์ ๋ณดํต Constructor function (์์ฑ์ ํจ์) ๋ผ๊ณ ํจ. ๋ํ ์ผ๋ฐ์ ์ผ๋ก ์์ฑ์ํจ์๋ ๋ณดํต ์ฒซ๊ธ์๋ฅผ ๋๋ฌธ์๋ฅผ ํ๊ธฐํด์ค
์์ฑ์ ํจ์๊ฐ ์์ฑํ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค๋ผํจ. ์์ฑ์ ํจ์ ๋ด๋ถ์์ this๋ ์์ฑ์ ํจ์๊ฐ ์์ฑํ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฅดํด
eventhandler์ this๋ฅผ ์ฐ๋๊ฑด ๋งค์ฐ ๋น์ถ์ฒํจ
๋ค๋ฅธ ๋๋ฃ ํ์ ๊ฐ๋ฐ์๋ค์๊ฒ ๋งค์ฐ ๋ฏผํ์
this๋ ๊ทธ ์์ฒด๋ก ๋งค์ฐ ๋ถํ์ค์ฑ์ด ๋์ ์ธ์๋ผ ๊ฐ๋
์ฑ์ ๋์ฌ์ ์จ์ผํจ
์ฝ์ด์๋ฐ์คํฌ๋ฆฝํธ ์ฐธ๊ณ