September 14, 2021
: 웹 브라우저와 관련된 모든 객체 (웹브라우저가 제공하는 기능)
Window
객체 : BOM의 최상위 객체.
window 객체 하위에 존재하는 여러 객체들
location
: url 주소와 관련navigator
: 브라우저에 대한 정보history
: 앞뒤 페이지 이동정보를 기록screen
: 사용자 화면document
: 브라우저에 표시된 HTML 문서[이미지 출처] https://www.splessons.com/lesson/javascript-bom/
파싱
하여 브라우저가 이해할 수 있는 구조로 구성하여 메모리에 적재하는데, 이렇게 파싱된 결과가 DOM
이다. 부모-자식 관계가 있는 트리 구조로 구성되기 때문에 DOM Tree
라고 한다.[이미지 출처] 위키백과
💡 참고 : 웹문서 브라우저 렌더링
- 브라우저가 HTML 문서를 로드하고 데이터를 파싱한다.
- HTML을 파싱한 결과로 DOM Tree를 생성한다.
- 파싱하는 중 CSS파일 링크를 만나면 CSS파일을 요청해서 받아온다.
- CSS 파일을 읽어서 CSSOM (Css Object Model)을 생성한다.
- Attachment : DOM Tree와 CSSOM을 사용하여 Render Tree를 만든다.
- Layout: 각 노드들의 위치와 크기를 계산해서 Render Tree를 화면상에 배치한다.
- Paint: 계산이 완료된 렌더 트리를 실제로 화면에 그린다.
- Reflow, Repaint : 특정 액션/이벤트에 따라 HTML 요소가 변화하면 Layout을 다시 그리고(Reflow), 화면에 다시 그려준다(Repaint)
Dom Tree는 4종류의 요소(노드)로 구성된다.
문서 노드(Document Node)
요소 노드(Element Node)
속성 노드(Attribute Node)
텍스트 노드(Text Node)
document.getElementById(id)
: id 속성값으로 한 개의 노드 선택document.querySelector(cssSelector)
: document.getElementsByClassName(class)
: 해당 클래스에 속한 요소를 모두 선택document.getElementsByName(name)
: 해당 name 속성을 가진 요소를 모두 선택document.getElementsByTagName(태그명)
: 해당 태그인 요소를 모두 선택document.createTextNode(텍스트)
: 해당 텍스트로 text노드 요소 생성document.write(텍스트)
: 문서에 텍스트 출력요소.parentNode
: 요소의 부모 노드 반환요소.childNodes
: 요소의 자식 노드 리스트 반환요소.firstChild
/ 요소.lastChild
: 요소의 첫번째 / 마지막 자식 노드 반환요소.nextSibling
/ 요소.previousSibling
: 요소의 다음 / 이전 형제 노드 반환/* 객체 리터럴 생성하기 */
let obj = {
name: 'bori', // 변수(=property) 포함 가능
age: 6,
info: function(){ // 메서드 포함 가능
return name;
}
}
console.log(obj); // {name: 'bori', age: 6, info: ƒ}
console.log(typeof(obj)); // object
console.log(obj.info()); // bori
/* 새로운 property 추가 및 값 대입, 삭제 가능 */
obj.address = 'seoul';
console.log(obj.address); // seoul
delete obj.address;
console.log(obj.address); // undefined
형식
데이터이름
과 값
의 key, value 쌍으로 이루어짐 " "
(큰따옴표) 안에 있어야 함let v1 = {"name":"보리", "age": 6};
console.log(v1.name); // 보리
let v2 = '{"name":"보리", "age": 6}';
console.log(v2.name); // undefined (v2는 그냥 문자열이므로)
console.log(JSON.parse(v2).name); // JSON 형태의 문자열은 JSON.parse() 함수를 통해 JSON 데이터로 파싱 가능
let v3 = "{'name':'보리', 'age': 6}";
console.log(JSON.parse(v3).name); // Uncaught SyntaxError: Unexpected token ' in JSON
// key값이 단일따옴표로 되어 있는 경우 파싱 불가
참고한 사이트