본문 바로가기
WEB

JavaScript window 객체: 주요 속성, 메서드, 이벤트 알아보기

by 신림쥐 2024. 11. 22.
728x90

 


 

개요

  • window 객체는 JavaScript에서 전역 객체(global object)로, 브라우저 환경에서 제공하는 다양한 기능과 속성을 제공합니다. 브라우저의 전체 창(window)에 대한 정보를 제공하며, 전역 범위에서 접근 가능합니다. Node.js에서는 window 객체 대신 global 객체를 사용합니다.
  • window 객체는 웹 개발에서 핵심적인 역할을 하며, DOM, 브라우저 상태, 이벤트 관리 등 다양한 작업에 사용됩니다. 다만, 전역 네임스페이스를 오염시킬 수 있으므로 과도한 사용은 피하는 것이 좋습니다.

 

 

 

window 객체의 대표적인 속성

1. document

  • 현재 로드된 HTML 문서를 나타내는 객체.
  • DOM 트리 조작 및 HTML 요소 접근 가능.

2. location

  • 현재 페이지의 URL 정보를 포함.
  • window.location.href로 URL 확인 및 변경 가능.
// URL 정보 가져오기
console.log(window.location.href);

// 새 페이지로 이동
window.location.href = 'https://example.com';

 

3. navigator

  • 브라우저 정보 및 네트워크 상태를 제공.
  • 예: navigator.userAgent, navigator.geolocation

 

4. history

  • 사용자가 방문한 페이지의 히스토리를 관리.
  • 메서드: history.back(), history.forward().

5. localStorage / sessionStorage

  • 클라이언트 측 데이터를 저장하는 객체.
  • localStorage는 지속적 저장, sessionStorage는 세션 동안만 유지.
// 로컬 스토리지 저장 및 가져오기
localStorage.setItem('key', 'value');
console.log(localStorage.getItem('key'));
  • screen
    • 사용자의 화면 해상도와 같은 정보를 제공.
    • 예: screen.width, screen.height.
// 화면 크기 확인
console.log(`Screen width: ${window.screen.width}`);
console.log(`Screen height: ${window.screen.height}`);

 

 

window 객체의 대표적인 메서드

1. alert(message)

  • 알림 창 표시.
setTimeout(() => {
  alert('5 seconds passed!');
}, 5000);

 

2. confirm(message)

  • 확인 창 표시. 사용자의 확인 여부를 true/false로 반환.

3. prompt(message, default)

  • 입력 창 표시. 사용자 입력 값을 반환.

4. setTimeout(callback, delay)

  • 일정 시간 후에 콜백 함수를 실행.

5. setInterval(callback, interval)

  • 일정 시간 간격으로 콜백 함수를 반복 실행.

6. clearTimeout(timeoutId)

  • 설정된 타임아웃 취소.

7. clearInterval(intervalId)

  • 설정된 인터벌 취소.

 

window 객체 이벤트

 

1. window.onload

  • 페이지가 모두 로드된 후 실행되는 이벤트.

2. window.onresize

  • 창 크기가 변경될 때 발생하는 이벤트.

3. window.onscroll

  • 사용자가 스크롤할 때 발생하는 이벤트.

4. window.addEventListener / window.removeEventListener

  • 이벤트를 등록하거나 제거.

 

window.location.pathname 와 location.pathname 차이점

console.log(window.location.pathname); // "/current-page"
console.log(location.pathname);        // "/current-page"

 

window 꼭 작성해야 궁금하다면 결과적으로는 작성하지 않아도 됩니다.

window.location.pathname과 location.pathname은 브라우저 환경에서 동일하게 작동하며, 일반적으로 차이가 없습니다. 두 표현 모두 현재 URL의 **경로(path)**를 나타내는 속성을 반환합니다.

 

window 동작 원리

  • window는 전역 객체로, 브라우저 환경에서 JavaScript의 전역 컨텍스트는 기본적으로 window를 참조하여 브라우저에서 모든 전역 속성과 메서드를 포함합니다.
  • location은 window 객체의 속성입니다.
    • 따라서, location은 실제로 window.location의 참조(reference)입니다.
    • window 객체는 암묵적으로 생략 가능하므로 location.pathname이라고 작성해도 내부적으로 window.location.pathname와 동일하게 해석됩니다.

 

언제 차이가 있을 수 있는가?

  • Node.js 또는 비브라우저 환경에서는 window 객체가 없으므로 window.location이 정의되지 않습니다. 브라우저 외부에서 동작하려면 window를 사용할 수 없습니다.

 

추천 사용법

  • 일관성을 위해: 브라우저 환경에서는 간결한 location.pathname 사용을 권장합니다.
  • 명시성을 위해: 다른 개발자와 협업할 때는 window.location.pathname처럼 명시적으로 작성하는 것이 코드 가독성을 높일 수 있습니다.

 

728x90