[JavaScript] 자바스크립트의 구성

2022. 5. 4. 02:40·React/JavaScript
목차
  1. 자바스크립트
  2. DOM (Document Object Model)
  3. BOM (Brower Object Model)
  4. 노드
  5. 이벤트
  6. 캡쳐링과 버블링

자바스크립트

프로그래밍 언어를 해석하는 기법은 크게 번역 기법(컴파일러가 이에 속함)과 인터프리터가 있다. 
컴파일러 : 고급언어로 작성된 프로그램을 미리 원시언어로 번역해 프로그램을 생성
인터프리터 : 실행과 동시에 한 줄 씩 원시언어로 번역하는 기법

자바스크립트는 컴파일러를 통하는 언어가 아니라, 인터프리터 기법으로 한 줄 씩 기계어로 번역된다. 언어 수준이 비교적 간단하지만 컴파일러보다 속도가 느리고 오류를 검출하기 어렵다. 또한, 호이스팅이라는 개념으로 변수(var 타입)와 함수가 최상단으로 끌어올려지는 특징이 있다.

 

 

DOM (Document Object Model)

객체 지향 모델로 구조화된 문서를 표현하는 방식이다. 프로그래밍 언어가 구조, 스타일, 내용 등을 변경할 수 있도록 하며 XML과 HTML 문서가 채택한 프로그래밍 인터페이스이다.

쉽게 말해, HTML 문서를 다루는 표준화된 방법을 정의한다. 모든 HTML 문서는 DOM을 통해 화면에 접근한다.

const nameInput = document.getElementById('input-name');
nameInput.text = "코딩으로 세계정복"

document 객체가 DOM을 표현하고 있으며, Javascript에서 다음과 같이 DOM 요소들에 접근해 웹을 구성할 수 있다.

 

 

BOM (Brower Object Model)

문서 이외의 모든 것들을 제어하기 위해 브라우저가 제공하는 추가 객체로 Navigator, Screen, Location 등이 여기에 속한다.

페이지의 이동이나 웹 브라우저의 크기 변경 등을 할 수 있다.

 

 

노드

노드 트리 (출처 엘리스SW트랙)

HTML DOM에서 정보를 저장하는 계층적 단위로, HTML DOM으로 모든 노드에 접근 가능하다.

쉽게 말해 각각의 HTML태그와 내부에 삽입하는 텍스트, 주석 등 모든 구성 요소들을 의미한다.

다음과 같이 노드를 생성하고 DOM에 주입할 수 있다.

const navMenuElement = document.createElement("a");
navMenuElement.className = "navbar-item";
navMenuElement.innerText = `${category}`;

const navContainer = document.getElementById('nav-container');
navContainer.appendChild(navMenuElement);

 

문서 노드

HTML 문서 전체를 나타낸다.

 

요소 노드

모든 HTML은 요소(element) 노드로 속성 노드를 가질 수 있다.

 

주석 노드

HTML 문서의 모든 주석이 해당한다. 주석을 동적으로 변경하는 경우는 없기에 잘 사용하지 않는다.

 

속성 노드

모든 HTML의 속성들은 속성 노드에 해당되며, 요소 노드의 자식 노드에는 포함되지 않는다. 즉, 자식 노드를 조회하는 방법으론 조회할 수 없다.

 

텍스트 노드

모든 텍스트는 텍스트 노드이며, 텍스트 노드만을 삽입하면 <p>태그 등 없이 텍스트만 삽입된다.

 

 

이벤트

웹 브라우저가 알려주는 HTML 요소에 대한 동작의 발생을 말한다. 자바스크립트는 이벤트를 감지해 특정 동작을 수행할 수 있다.

onClick, onFocus와 같은 상호 작용 동작들이라고 할 수 있다.

//HTML
<button onclick="this.innerText = '성공입니다!'">클릭하세요!</button>

//JavaScript
button.click = "this.innerText = '성공입니다!'";
button.addListener("click", function(e)=>{});

 

 

캡쳐링과 버블링

중첩된 요소 중 가장 하위 요소에서 이벤트 발생시, 위와 같이 상위 요소들의 이벤트가 함께 발생되는 이벤트 전파가 발생한다.

자식 요소에서 상위 요소로 전파됨을 버블링이라고 하고, 상위 요소(window)에서 하위 요소로 전파되는 것을 캡쳐링이라고 한다.

 

 

저작자표시 비영리 변경금지

'React > JavaScript' 카테고리의 다른 글

[JavaScript] 비동기 처리  (0) 2022.06.06
[JavaScript] This 포인터 이해하기  (0) 2022.06.02
[JavaScript] 호이스팅과 클로저  (2) 2022.05.06
[JavaScript] 실행 Context와 Scope  (0) 2022.05.06
[JS] 자바스크립트 기본기  (0) 2021.01.05
  1. 자바스크립트
  2. DOM (Document Object Model)
  3. BOM (Brower Object Model)
  4. 노드
  5. 이벤트
  6. 캡쳐링과 버블링
'React/JavaScript' 카테고리의 다른 글
  • [JavaScript] This 포인터 이해하기
  • [JavaScript] 호이스팅과 클로저
  • [JavaScript] 실행 Context와 Scope
  • [JS] 자바스크립트 기본기
코딩으로세계정복
코딩으로세계정복
Connecting the dots
  • 코딩으로세계정복
    코딩으로 세계정복
    코딩으로세계정복
  • 전체
    오늘
    어제
    • 전체 (134)
      • Who am I (10)
        • Portfolio (4)
        • Reminiscence (5)
        • Oversea (1)
        • SiliconValley (0)
      • React (36)
        • React Basic (15)
        • React Tech (5)
        • JavaScript (7)
        • TypeScript (3)
        • CSS&HTML (3)
        • Firebase (3)
      • NodeJS (1)
        • NodeJS Basic (1)
      • Flutter (55)
        • Flutter Widget Design (5)
        • Flutter Widget Basic (8)
        • Flutter Tech (18)
        • Flutter Issue (7)
        • Flutter Web (6)
        • About Flutter (2)
        • Firebase (1)
        • Dev Env (1)
        • Dart (7)
      • Programming (31)
        • Web (1)
        • General (0)
        • Algorithm (25)
        • Python (1)
        • VS Code (2)
      • Django (0)
  • 블로그 메뉴

    • Who I AM
    • React
    • NodeJS
    • Flutter
    • Programming
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    map
    CSS
    flutter web
    useRef
    링고리
    파이썬
    자바스크립트
    JavaScript
    Firebase
    Redux
    TypeScript
    플러터
    JSON
    useState
    Lingory
    포트폴리오
    플러터 웹
    DART
    Flutter
    탐욕법
    HTML
    react
    웹
    DP
    github
    프로그래머스
    알고리즘
    useTranslation
    리액트
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩으로세계정복
[JavaScript] 자바스크립트의 구성

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.