ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ค์๊ณผ ๊ฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ผ๋ฐ์ ์ผ๋ก ์๊ดํธ ()๋ฅผ ํตํด ํจ์๋ฅผ ํธ์ถํ๋ ๊ธฐ๋ณธ ๋ฐฉ์ ๋ง๊ณ ๋ function์ ๋ด์ฅ ํจ์์ธ call ์ด๋ apply
๋ฅผ ํตํด์๋ ํจ์๋ฅผ ํธ์ถ ํ ์ ์๋ค. call๊ณผ apply๋ ๋์ ๋ฐฉ์์ด ๊ฑฐ์ ๋น์ทํ๋ call์ ์ธ์๊ฐ์ ๋ฐ๋ ๊ฒ์ ๋นํด apply๋ ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ์ธ์
๋ก ๋ฐ์ ์ ์๋ค๋ ์ฐจ์ด๊ฐ ์๋ค.
call๊ณผ apply์ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ์ ๋ช ์์ ์ผ๋ก this๋ฅผ ๋ฐ์ธ๋ฉ ์ํฌ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก null๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ์ ์ญ ๊ฐ์ฒด์ธ window ๊ฐ this๋ก์ ๋ฐ์ธ๋ฉ ๋๋, ์ด๋ฅผ ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ฐ์ฒด ์ธ์คํด์ค์ ๋ฐ์ธ๋ฉํ ์ ์๋ค.(ํจ์ ์ ์ธ๋ฌธ์ผ๋ก ์ ์ ๋ ์ ์ญ ํจ์๋ ์ ์ญ ํ๊ฒฝ ๋ ์ฝ๋
์ ๊ฐ์ฒด ํ๊ฒฝ ๋ ์ฝ๋์ ์ฐ๊ฒฐ๋ BindingObject๋ฅผ ํตํด ์ ์ญ ๊ฐ์ฒด์ ํ๋กํผํฐ์ ๋ฉ์๋๊ฐ ๋๋ค.)
์์ ์์ค ์ฝ๋ ์ yell์ obj ๊ฐ์ฒด์ ๋งค์๋์ด๋ค. ํ์ง๋ง call ํจ์๋ฅผ ํตํด ํธ์ถํ๋ฉฐ ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ์ผ๋ก ๋ ๋ค๋ฅธ ๊ฐ์ฒด์ธ obj2๋ฅผ ๋ฃ์ด ์ฃผ์ด
this์ ๋ฐ์ธ๋ฉ์ obj2๋ก ๋ฐ๊พธ์ด ์ฃผ์ด 'obj2' ๋ฌธ์์ด์ด ์ถ๋ ฅ์ ๋๋๋ก ํ์๋ค.
์์ ๊ฐ์ด this ๋ฐ์ธ๋ฉ์ด ๋ฐ๋๋ ๊ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์์ this๋ ํจ์ ํธ์ถ ๋ฐฉ์์ ์ํด ๋์ ์ผ๋ก ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋งค์๋ ๋ด๋ถ์ this์๋ ๋ฉ์๋๋ฅผ ํธ์ถ ํ ๊ฐ์ฒด์ ๋ฐ์ธ๋ฉ๋๋ค. ์ฌ๊ธฐ์ this๋ ๋ฉ์๋๋ฅผ ์์ ํ ๊ฐ์ฒด๊ฐ ์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฐ
์ฒด์ ๋ฐ์ธ๋ฉ ๋๋ค๋ ์ ์ด๋ค.
๋ฉ์๋๋ ๊ฐ์ฒด์ ํฌํจ๋์ด ์๋ ๊ฒ์ด ์๋๋ผ ํ๋กํผํฐ์ ๋ฐ์ธ๋ฉ๋ ํจ์์ด๋ค.
์ฆ, ์์ ์์ค ์ฝ๋ ์ obj ๊ฐ์ฒด์ yell ํ๋กํผํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ํจ์ ๊ฐ์ฒด๋ obj ๊ฐ์ฒด ํฌํจ๋์ด ์๋ ๊ฒ์ด ์๋ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๋ ๋ณ๋์
๊ฐ ์ฒด์ด๋ค.
'JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ScrollSpy_offsetTop, scrollTop, clientHeight (0) | 2021.06.03 |
---|---|
Context Menu (0) | 2021.06.01 |
dataset data-id์ ์ด์ฉํด ์ด๋ฒคํธ ์์ (0) | 2021.04.14 |
๋๊ดํธ ํ๊ธฐ๋ฒ์ ํตํ ๊ฐ์ฒด ํ๋กํผํฐ ์ ๊ทผ (0) | 2021.04.07 |
getBoundingRect().top๊ณผ offsetTop์ ์ด์ฉํ ๊ฑฐ๋ฆฌ๊ฐ ๊ณ์ฐ (0) | 2021.03.29 |