제로베이스 프론트엔트 스쿨 9주차 WIL
Weekly I learned...
1. 객체 프로퍼티 설정 / 프로토타입 상속
- 객체 프로퍼티의 플래그, getter/setter, 프로토타입에 대해서 학습하였다. 관련한 문제를 출제해서 정리해보았다. 프로토타입은 너무 헷갈려서 다시한번 정리가 필요할 것 같다.
2022.09.27 - [JavaScript] - [스터디] 객체 프로퍼티 설정 / 프로토타입 상속
2. DOM 조작 메서드 복습
- 과제2를 시작하려다가 제로베이스 기초강의에서는 DOM조작 메서드들을 너무 간략하게 다뤄서 예전에 사두고 안보고 있었던 유데미에 colt씨의 강의에서 필요한 부분을 찾아보았고, (스스로를 위해) 간략하게 정리해본다.
1) DOM : 문서 객체 모델, 웹페이지를 구성하는 JS 객체들의 집합, 브라우저에서 모든 HTML요소가 객체로 변환되어 존재하고, 이들간의 관계를 트리로 나타낼 수 있다. 이 트리구조의 최상위 객체가 document.
2) DOM 선택 메서드
- getElementById( ) : ID가 일치하는 요소 찾아서 있으면 해당 요소 리턴 없으면 null이 리턴됨
- getElementsByTagName( ) : 태그네임이 일치하는 모든 요소를 HTMLCollection으로 반환함, 없으면 비어있는 상태로 반환
- getElementsByClassName( ) : 클래스 이름으로 선택, HTMLCollection으로 반환함.
(HTMLCollection : Element의 집합, 배열처럼 생겼으나 배열아님, iterable collection으로 for...of는 사용가능)
- querySelector( ) : 위의 세 메서드보다 최신, css 선택자처럼 괄호안에 선택자를 넣어서 모든 요소 선택가능, 첫번째로 일치하는 값 하나만 반환한다.
- querySelecorAll( ) : 선택자 일치하는 모든 요소를 NodeList로 반환
3) DOM 조작 메서드
- innerText : 태그 사이의 텍스트를 반환(숨겨진 항목은 무시됨)
- textContent : 마크업한 포맷대로 보여준다. 숨겨진 항목도 보여준다.
- innerHTML : 마크업의 전체 내용을 출력한다.(태그까지), HTML로 취급한다. 연산자 사용으로 요소 추가/삭제도 가능
- Attribute : document.querySelector.attribute 로 사용시 해당 속성 선택가능 (JS객체로 반환된다(계산된 값))
- getAttribute( ) : 속성으로 선택, HTML자체에서 직접 가져온다.
- setAttribute(attr, value) : 속성의 값을 value로 설정/변경할 수 있다.
- style: 스타일 객체를 가져와서(이때 스타일은 빈문자열로 나온다) 설정할 수 있게 해준다. 카멜케이스로 작성해야함(ex. body.style.backgroundColor)
- window.getComputedStyle(선택자) : 계산된 스타일로 구성된 객체 반환됨
- classList : 요소의 클래스를 검색, 제어, 조작할 수 있게 해준다.
- classList.add( ): 클래스 추가
- classList.remove( ) : 클래스 제거
- classList.contains( ) : 클래스 적용 여부 파악
- classList.toggle( ) : 클래스가 있으면 제거되고, 없으면 추가된다. 호출할때마다 이 싸이클이 반복된다. (유용하게 사용됨)
- parentElement : 부모 요소 반환됨
- childElementCount : 자식 요소 개수 반환됨
- children : 자식요소 반환, HTMLCollection으로 반환됨
- nextSibling / previousSibling : 인접한 형제 요소, 해당하는 DOM 노드가 반환된다.
- nextElementSibling / prevousElementSibling : 형제요소 자체가 반환됨 (공백과 텍스트 노드 무시됨)
- createElement( ) : 새 DOM요소 만들기
- append : 새로만든요소를 어디에 포함되게 할 것인지 정해주는 메서드, 한번에 여러개 삽입 가능, 문자열도 전달 가능, 요소의 끝에 삽입됨, 보다 최신 문법
- appendChild( ) : append와 같은 역할이나 한번에 하나만 삽입가능하며, 문자열은 전달 불가능, 요소의 마지막 자녀로 만들어 준다.
- pretend : 요소의 앞에 추가
- insertAdjacentElement(position, element) : 인접한 형제로 삽입하고 싶을때 사용, position 지정 필요
- after/before : 뒤/앞에 추가
- removeChild( ) : 요소 제거, 선택한 요소 제거가 아닌 요소에서 자식을 제거하는 것. (제거하려는 요소의 부모를 호출해야함)
- remove( ) : 요소 제거, 제거하려는 요소에 호출하는 메서드
4) DOM 이벤트
- 이벤트가 발생하면 반응하게 한다.
- 사용자 인터렉션에 반응하는 법: 1) html요소에 인라인으로 속성 추가, 2) 자바스크립트 안에서 추가, 3) addEventListener 사용(베스드방법)
5) addEventListener('event', call back function)
- 선택된 요소에 이벤트가 발생시 콜백함수가 실행될 수 있게 해준다.
아쉬운 점 / 추후계획
- 자료구조/알고리즘 : 문제를 학습하기 위해 푸는 느낌보다 과제를 해결하기 위해 푸는 느낌으로 자꾸 접근해서 어느순간 자꾸 쉬운걸 골라서 풀고 있는 느낌이 들었다. 지난주 시험을 통해서 앞으로 공부해야 할 방향과 부족한 부분들을 점검할 수 있었는데, 그 부분에 맞춰서 관련 문제들을 풀어봐야겠다. (자료구조 및 알고리즘 종류별로 돌아가면서 풀기!)
- 자바스크립트 이론 : 공부엔 때가 있다는 말이 뭔지 알거같다. 확실히 이해도 느리고 금방 까먹는다. 머릿속이 혼돈 그 잡채이다 못해 진짜 잡채가 되버린 느낌...하지만 노력엔 때가 없지! 한번에 다 이해하고 습득하려는 욕심을 부리지 않고 몇번 본다고 생각하고 차근차근 익혀봐야겠다!
- 계획: 자바스크립트 과제인 과제2를 시작해야겠다!
'회고 > [WIL] 제로베이스 프론트엔드 스쿨' 카테고리의 다른 글
[프론트엔드스쿨] WIL 12주차 (0) | 2022.10.23 |
---|---|
[프론트엔드스쿨] WIL 10주차 (0) | 2022.10.09 |
[프론트엔드스쿨] WIL 8주차 (0) | 2022.09.25 |
[프론트엔드스쿨] WIL 7주차 (0) | 2022.09.18 |
[프론트엔드스쿨] WIL 6주차 (2) | 2022.09.11 |
댓글