
BOM은 Browser Object Model의 (브라우저 객체모델)약어로, 자바스크립트 언어로 브라우저 자체를 제어하기 위해서 브라우저를 객체화한 것이다.
마우스라는 하드웨어 인터페이스를 통해서 브라우저의 새 탭을 열거나, 주소 표시줄에 다른 주소를 입력해서 웹 문서를 이동할 수 있다. 이러한 기능을 브라우저를 객체화함으로써 자바스크립트로도 제어가 가능하다.
🚀 DOM은 객체화된 문서, BOM은 객체화된 브라우저
window는 모든 객체가 소속된 객체이며, 브라우저 창 자체를 의미한다.
window 객체는 생략이 가능하다.
🔽새 탭 열기
window.open("https://google.com"); // 구글 페이지를 새 탭으로 열어준다.
🔽탭 닫기
window.close(); // 현재 탭을 닫아준다.
🔽새 탭 열기
open("https://google.com"); // 구글 페이지를 새 탭으로 열어준다.
window 객체는 브라우저 환경에서 제공하는 BOM 및 DOM이 제공하는 객체 중에서 최상위 객체이다. console.log(window.document); // DOM의 document 객체 (DOM 요소)
console.log(window.location); // BOM의 location 객체
console.log(window.navigator); // BOM의 navigator 객체
Object.prototype을 상속받는다. 추가로, window는 자바스크립트 내장 객체가 아니다. 브라우저가 제공하는 API인 BOM을 자바스크립트가 이용해서 window 객체를 사용하기 때문이다. 정확하게는 브라우저 환경에서 제공하는 BOM의 핵심 객체이다.
HTML 문서는 브라우저의 렌더링 엔진에 의해 해석되면서 객체화된다.
document 객체는 DOM에 대한 정보를 갖고 있는 객체이다.
🔽DOM 요소 가져와서 텍스트 바꾸기
let domObject = document.querySelector(CSS 선택자);
domObject.textContent = "제어합니다.";
querySelector() 메서드의 인자로 CSS 선택자를 넣어주면, DOM에서 해당 선택자와 첫 번째로 일치하는 DOM 요소를 반환한다. 일치하는 DOM 요소가 없다면 null을 반환한다.
🔽window 객체는 BOM 및 DOM의 객체 중에서 최상위 객체
window.document // window 객체는 생략 가능하기에 코드를 줄이기 위해 생략하는 것이 좋음.
현재의 브라우저가 접근했던 URL history를 제어할 수 있다.
🔽뒤로 가기
history.back();
🔽앞으로 가기
history.forward();
문서의 주소와 관련된 객체이다. 다시말해, 웹 문서 URL에 대한 정보를 갖고 있다. 따라서, location 객체를 이용해서 문서 URL을 변경할 수 있고, 문서의 위치와 관련해서 다양한 정보를 얻을 수 있다. 그리고, window 객체의 프로퍼티인 동시에 document 객체의 프로퍼티이다.
🔽홈페이지의 호스트 가져오기
location.host; // 예시) 'www.naver.com'
호스트 이름은 인터넷에서 특정 서버를 식별하기 위한 도메인 이름이다.
🔽웹 문서의 주소 바꾸기
location.href = "https://google.com";
사용자가 현재 보고 있는 페이지에서 "https://google.com"으로 이동하게 만든다.
사용자의 디스플레이 화면에 대한 다양한 정보를 갖고 있는 객체이다. 사용자의 디스플레이 화면이라 함은 핸드폰 혹은 컴퓨터와 같이 무엇으로 보느냐에 따라 디스플레이가 달라진다.
🔽사용자 디스플레이 화면에 대한 정보 받기
console.dir(screen);

console.dir()을 사용해서 객체를 효율적으로 출력할 수 있다.
실행중인 애플리케이션(브라우저)에 대한 정보를 얻을 수 있다.
navigator.geolocation.getCurrentPosition(): 현재 애플리케이션에 대한 위치 정보navigator.appName: 앱(브라우저) 이름을 반환한다.navigator.appVersion: 앱(브라우저)에 대한 버전 정보를 반환한다.navigator.userAgent: 서버에 요청할 때 앱(브라우저)에 대한 정보이다. getCurrentPosition(success, error, options)
success는 위치 정보를 성공적으로 받아왔을 때 호출되는 콜백함수이다. 콜백함수의 매개변수로는 사용자의 현재 위치에 대한 정보(위도, 경도, 정확도 등)를 포함한 객체가 전달된다.
error는 위치 정보를 얻는데 실패했을 때 호출되는 콜백함수이다. 콜백함수의 변수로는 오류에 대한 정보를 담고 있는 error 객체가 전달된다.
options는 위치 정보를 요청할 때 사용할 옵션을 지정하는 객체이다. 위치 정보의 정확도, 최대 대기 시간 등 여러 속성을 설정할 수 있다.
🔽위치 정보 가져오기
navigator.geolocation.getCurrentPosition(function (pos) {
const crd = pos.coords;
console.log("Your current position is:");
console.log(`Latitude : ${crd.latitude}`);
console.log(`Longitude: ${crd.longitude}`);
console.log(`More or less ${crd.accuracy} meters.`);
})

이처럼 애플리케이션을 실행 중인 사용자의 현재 위치 정보를 가져올 수 있다.
Geolocation: getCurrentPosition() 메서드에 관한 mdn 게시글: https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition
BOM이란? 강의 자료: https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition