๐Ÿ“’Javascript ์ด๋ฒคํŠธ :)

zooyahoยท2022๋…„ 4์›” 21์ผ
0

study with me

๋ชฉ๋ก ๋ณด๊ธฐ
12/19
post-thumbnail

์ด๋ฒคํŠธ

  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ: ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ˜ธ์ถœ๋  ํ•จ์ˆ˜
  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก: ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์˜ ํ˜ธ์ถœ์„ ์œ„์ž„ํ•˜๋Š” ๊ฒƒ

1. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก

๐Ÿ”ต ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ๋ฐฉ์‹

  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ์ด๋ฆ„์€ onClick๊ณผ ๊ฐ™์ด on์ ‘๋‘์‚ฌ์™€ ์ด๋ฒคํŠธ์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ฒคํŠธ ํƒ€์ž…์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Œ.
  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ๊ฐ’์œผ๋กœ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ฌธ ๋“ฑ์˜ ๋ฌธ์„ ํ• ๋‹นํ•˜๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋“ฑ๋ก๋จ.

๐Ÿ‘พ #1

<button onClick="sayHi('Lee')">Click ME!</button>

๐Ÿ”ต ํ”„๋กœํผํ‹ฐ ๋ฐฉ์‹

  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ์˜ ํ‚ค๋Š” onClick๊ณผ ๊ฐ™์ด on์ ‘๋‘์‚ฌ์™€ ์ด๋ฒคํŠธ์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ฒคํŠธ ํƒ€์ž…์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Œ.
  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ์— ํ•จ์ˆ˜๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก๋จ.
const $button = document.querySelector('button');

$button.onclick = function(){
	console.log('button click');
};

๐Ÿ“ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” ์ด๋ฒคํŠธ ํ‹ฐ๊นƒ ๋˜๋Š” ์ „ํŒŒ๋œ ์ด๋ฒคํŠธ๋ฅผ ์บ์น˜ํ•  DOM๋…ธ๋“œ ๊ฐ์ฒด์— ๋ฐ”์ธ๋”ฉํ•จ!!!
๐Ÿ“ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ์— ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋งŒ ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Œ.

๐Ÿ”ต addEventListener ๋ฉ”์„œ๋“œ ๋ฐฉ์‹

  • EventTarget.addEventListener(์ด๋ฒคํŠธ ํƒ€์ž…, ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ, capture ์‚ฌ์šฉ ์—ฌ๋ถ€)
  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋ฏ€๋กœ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก ๊ฐ€๋Šฅ.
  • ์ฐธ์กฐ๊ฐ€ ๋™์ผํ•œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ค‘๋ณต ๋“ฑ๋กํ•˜๋ฉด ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋งŒ ๋“ฑ๋ก.

2. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ œ๊ฑฐ

  • addEventListener ๋ฉ”์„œ๋“œ๋กœ ๋“ฑ๋กํ•œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด EventTarget.prototype.removeEventListener ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ
  • ๋ฌด๋ช… ํ•จ์ˆ˜๋ฅผ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋กœ ๋“ฑ๋กํ•œ ๊ฒฝ์šฐ ์ œ๊ฑฐ ๋ถˆ๊ฐ€๋Šฅ.
    ๊ธฐ๋ช… ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋‚ด๋ถ€์—์„œ removeEventListener ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์‹œ ์ œ๊ฑฐ ๊ฐ€๋Šฅํ•œ๋ฐ, ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋‹จ ํ•œ๋ฒˆ ํ˜ธ์ถœ๋œ๋‹ค.
  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ ๋ฐฉ์‹์œผ๋กœ ๋“ฑ๋กํ•œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” null์„ ํ• ๋‹นํ•˜์—ฌ ์ œ๊ฑฐํ•œ๋‹ค.

3. ์ด๋ฒคํŠธ ๊ฐ์ฒด

  • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฒคํŠธ์— ๊ด€๋ จํ•œ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์ด๋ฒคํŠธ ๊ฐ์ฒด๊ฐ€ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š”๋ฐ, ์ƒ์„ฑ๋œ ์ด๋ฒคํŠธ ๊ฐ์ฒด๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋จ.
  • ์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ๋ฐ›์œผ๋ ค๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ •์˜ํ•  ๋•Œ ์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ๋ฐ›์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•ด์•ผํ•จ!!!

๐Ÿ‘พ #1

function showCoords(e) {
  console.log(`clientX: ${e.clientX}, clientY: ${e.clientY}`);
}
document.onclick = showCoords;

๐Ÿ“ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ event๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ๋Š” ์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ๋ฐ›์ง€ ๋ชปํ•œ๋‹ค!!!

๐Ÿ”ต ์ด๋ฒคํŠธ ๊ฐ์ฒด์˜ ๊ณตํ†ต ํ”„๋กœํผํ‹ฐ

  • type: ์ด๋ฒคํŠธ ํƒ€์ž…
  • target: ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ DOM ์š”์†Œ
  • currentTarget: ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋ฐ”์ธ๋”ฉ๋œ DOM์š”์†Œ
  • eventPhase: ์ด๋ฒคํŠธ ์ „ํŒŒ ๋‹จ๊ณ„
  • bubbles: ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง ์ „ํŒŒ ์œ ๋ฌด,๋ถˆ๋ฆฐ
  • cancelable: preventDefault ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ด๋ฒคํŠธ์˜ ๊ธฐ๋ณธ ๋™์ž‘์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€, ๋ถˆ๋ฆฐ
  • defaultPrevented: preventDefault ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ด๋ฒคํŠธ ์ทจ์†Œํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€
  • isTrusted: ์‚ฌ์šฉ์ž์˜ ํ–‰์œ„์— ์˜ํ•ด ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ์ธ์ง€ ์—ฌ๋ถ€, ๋ถˆ๋ฆฐ
  • timeStamp: ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์‹œ๊ฐ(๋ฐ€๋ฆฌ์ดˆ)

4. ์ด๋ฒคํŠธ ์ „ํŒŒ

  • ์บก์ณ๋ง ๋‹จ๊ณ„: ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์œ„ ์š”์†Œ์—์„œ ํ•˜์œ„ ์š”์†Œ ๋ฐฉํ–ฅ์œผ๋กœ ์ „๋‹ฌ
  • ํƒ€๊นƒ ๋‹จ๊ณ„: ์ด๋ฒคํŠธ๊ฐ€ ์ด๋ฒคํŠธ ํƒ€๊นƒ์— ๋„๋‹ฌ
  • ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„: ์ด๋ฒคํŠธ ํ•˜์œ„ ์š”์†Œ์—์„œ ์ƒ์œ„ ์š”์†Œ ๋ฐฉํ–ฅ์œผ๋กœ ์ „๋‹ฌ

5. ์ด๋ฒคํŠธ ์œ„์ž„

  • ์ด๋ฒคํŠธ ์œ„์ž„์„ ํ†ตํ•ด ์ƒ์œ„ DOM ์š”์†Œ์— ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•˜์œ„ DOM ์š”์†Œ์— ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•  ํ•„์š” ์—†์Œ.
  • ๋™์ ์œผ๋กœ ํ•˜์œ„ DOM ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋”๋ผ๋„ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋กํ•  ํ•„์š” ์—†์Œ.
profile
์ฆ๊ฒ๊ฒŒ ๊ฐœ๋ฐœํ•˜์ž ์ฅฌ์•ผํ˜ธ๐Ÿ‘ป

0๊ฐœ์˜ ๋Œ“๊ธ€