document.getElementById()
document.querySelectorAll()
document.createElement()
document.appendChild()
window
객체location
navigator
screen
history
document | window |
---|---|
웹페이지 전체 | 브라우저 전체 |
문서 | 프로그램 |
JavaScript : single-thread 언어
Event Loop
JavaScript 엔진
push
pop
Event Queue (Task Queue)
setTimeout()
setInterval()
)의 콜백 함수가 보관되는 영역Web API
동작 방식
JavaScript의 비동기 JS코드를 브라우저 Web APIs에게 맡김
작업 끝난 결과를 콜백 함수 형태로 Event Queue에 push
Call Stack 비어있고, Event Queue의 작업 처리 준비 완료
→ Event Queue에서 pop해서 Call Stack에 push
Event Loop 의 반복적 확인
addEventListenr
element.addEventListener(event, handler, options);
event
이벤트 이름handler
핸들러 함수 (호출 형태X, 함수명 자체)options
true : capturing / false : bubbling(default)이벤트 핸들러 프로퍼티 방식 onclick
element.onclick = function (e) { ... }
[JavaScript] onclick vs. addEventListener(’click’)
type
: 이벤트 타입 (ex. “click”)target
: 실제로 이벤트를 발생시킨 요소 (ex. 클릭이벤트가 발생한 요소)currentTarget
: 발생 요소에서 상위로 올라가며 찾은 이벤트 핸들러가 등록된 요소clientX / clientY
: 포인터 관련 이벤트에서 커서의 상대 좌표 → 모니터 기준 X, 브라우저 화면 기준 Oe.preventDefault()
e.stopPropagation()
하위 요소에 각각 event를 붙이지 않고 상위 요소에서 하위 요소의 이벤트를 제어하는 것
합리적인 메모리 사용, 메모리 누수 방지
document.getElementById("file").addEventListener("click", function(e) {
// 파일 메뉴 동작
});
document.getElementById("edit").addEventListener("click", function(e) {
// 편집 메뉴 동작
});
document.getElementById("view").addEventListener("click", function(e) {
// 보기 메뉴 동작
});
// 바람직
document.getElementById("menu").addEventListener("click", function(e) {
var target = e.target;
if (target.id === "file") {
// 파일 메뉴 동작
} else if (target.id === "edit") {
// 편집 메뉴 동작
} else if (target.id === "view") {
// 보기 메뉴 동작
}
});