ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
li.addEventListener('click', () => {
const obj = {
image: this.dataset.image,
...JSON.parse(this.dataset.user)
}
modal.classList.add('active');
thumbnail.src = obj.image;
profileImg.src = obj.medium;
userName.textContent = obj.name;
insta.textContent = obj.instagram_username;
})
https://choi95.tistory.com/106
์ด์ ํฌ์คํ ์์๋ ์ผ๋ฐ ํจ์๋ก ์ต์ข ๋ฆฌํฉํ ๋ง๋ ์ํ์ ์ฝ๋์์ง๋ง ์ฒ์ ๊ตฌํํ ๋๋ ์ด๋ฒคํธ ๋ด์ ์ฝ๋ฐฑ ํจ์๋ ํ์ดํ ํจ์๋ก ์์ฑํ์๋ค.
ํ์ง๋ง ์ด์ ๊ฐ์ด ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ๋, this ๋ฐ์ธ๋ฉ์ด window ์ ์ญ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌ์ผ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค.
๋ฌธ์ ํด๊ฒฐ
์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์ ๋ด๋ถ์ this
- ์ธ๋ผ์ธ ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฐฉ์: this => ์ ์ญ๊ฐ์ฒด
- ์ด๋ฒคํธ ํธ๋ค๋ฌ ํ๋กํผํฐ ๋ฐฉ์: this => event.currentTarget
- ํ์ดํ ํจ์ ๋ฐฉ์: this => ์์ ์ค์ฝํ์ ๋ฐ๋ผ ์ ์ ์ผ๋ก ๊ฒฐ์
this๊ฐ ์ด๋ฒคํธ๊ฐ ๋ฐ์ธ๋ฉ๋์ด ์๋ ์์๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํด์๋ ํ์ดํ ํจ์๊ฐ ์๋ ์ผ๋ฐ ํจ์๋ฅผ ์จ์ผ ํ๋ค.
ํ์ดํ ํจ์๋ ํจ์ ํธ์ถ ๋ฐฉ์์ ๋ฐ๋ผ this๊ฐ ๋์ ์ผ๋ก ๊ฒฐ์ ๋๋ ์ผ๋ฐํจ์์ ๋ฌ๋ฆฌ ํจ์๊ฐ ์ ์ธ๋ ๋ this์ ๋ฐ์ธ๋ฉ๋ ๊ฐ์ฒด๊ฐ
์ ์ ์ผ๋ก ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ฌ ํ์ดํ ํจ์์์์ this๋ ์์ ์ค์ฝํ์ธ ์ผ๋ฐ ํจ์๋ฅผ ์ฐธ์กฐํ๊ณ ์๊ณ ์ผ๋ฐ ํจ์์์์ this๋ ๊ธฐ๋ณธ์ ์ผ๋ก window ์ ์ญ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ ๊ฒ์ด๋ค.
https://choi95.tistory.com/7?category=857834
์ด์ this ๋ฐ์ธ๋ฉ ๊ด๋ จ ํฌ์คํ ์์
onClick์ ์ฝ๋ฐฑ ํจ์์ด๊ธฐ ๋๋ฌธ์ ๊ณ ์ฐจ ํจ์ ๋ด์์ ์ผ๋ฐ ํจ์๋ก ํธ์ถ์ด ๋๋ค.
์ผ๋ฐ ํจ์์ this๋ ์ ์ญ ๊ฐ์ฒด๊ฐ ๋ฐ์ธ๋ฉ๋์ง๋ง class ๋ด์ ๋ชจ๋ ์์ค ์ฝ๋์์ ๊ธฐ๋ณธ์ ์ผ๋ก 'strict mode'๊ฐ ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ undefined ๊ฐ ๋ฐ์ธ๋ฉ๋๋ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ฒ์ด๋ค.
๋ผ๊ณ ๊ธฐ์ ํ์๋๋ฐ, ์ง๊ธ ๋ณด๋ ์ด๋ ํ๋ฆฐ ๋ด์ฉ์ด๋ค.
onClick์ ์ด๋ฒคํธ ํธ๋ค๋ฌ์์์ ์ฝ๋ฐฑ ํจ์์ด๊ธฐ ๋๋ฌธ์ ํจ์ ํธ์ถ์ด ๋ ๊ฒฝ์ฐ ๋ด๋ถ์ this๋ ์ ์ญ ๊ฐ์ฒด window๊ฐ ๋ฐ์ธ๋ฉ๋์ด์ ์ค๋ฅ๊ฐ ๋ ๊ฒ์ด ์๋๋ผ ์ ํํ๋ event.currentTarget์ด ๋ฐ์ธ๋ฉ๋์ด์ ์ค๋ฅ๊ฐ ๋ ๊ฒ์ด๋ค.
๋ฌผ๋ก ๋ง์ฝ์ onClick์ด ์ผ๋ฐ์ ์ธ ์ํฉ์์ ๊ณ ์ฐจ ํจ์ ๋ด์์ ํธ์ถ์ด ๋์์ ๊ฒฝ์ฐ์๋ this์๋ ์ ์ญ ๊ฐ์ฒด window๊ฐ ๋ฐ์ธ๋ฉ๋๋ค.
'JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CustomEvent๋ก ํน์ ์ด๋ฒคํธ ๊ธฐ๋ฅ ๋ถ๋ฆฌ (0) | 2021.07.28 |
---|---|
์คํฌ๋กค ์ค์ ์์น ๊ณ์ฐ_๋์ ๋ณด์ด์ง ์๋ ๋ฒ์ (0) | 2021.07.26 |
JS ์์์ ์ดํธ๋ฆฌ๋ทฐํธ์ ๊ฐ์ฒด ๋์ ํ ๋น (0) | 2021.07.25 |
์คํฌ๋กค ์์น ๊ฐ์ ธ์ค๊ธฐ (0) | 2021.07.23 |
ํด๋์ค๋ ์์ด๋ ๊ฐ์ด ์๋ Element ๊ฐ์ ธ์ฌ ๋ ๋ฌธ์ (0) | 2021.07.22 |