1) 상황에 따라 달라지는 this
함수 vs 메소드
함수 - 그 자체로 독립적인 기능 수행
메소드 - 자신을 호출한 대상 객체에 관한 동작 수행
함수로서의 this
-> 독립적
-> 실행컨텍스트가 활성화될 때 this가 지정되지 않으면
this = 전역 객체(window)
메소드로서의 호출 구분 기준 = .
[]
-> 호출의 주체가 있어 this가 binding이 된다.
-> 메소드 내부여도 함수로서 호출 시 this = 전역 객체
-> 중요한 것은 함수 호출 시 .
[]
존재 여부!
메소드 내부 함수에서의 this 우회
var self = this
등으로 this를 담는다생성자 함수 내부에서의 this
2) 명시적 this 바인딩
this에 별도의 값을 저장하는 방법
call method
-> 호출 주체인 함수를 즉시 실행하는 명령어
apply method
-> 매개변수를 배열 형태로 넘겨주는 것이 call과의 차이
bind method
-> 함수에 this를 미리 적용 / 부분 적용 함수 구현
-> name 프로퍼티에 'bound'라는 접두어가 붙어 추적하기가 쉽다
유사배열객체(array-like-object)
slice()
함수
arguments
NodeList
Math.max
Math.min
콜백 함수
목표
DOM(Document Object Model)
Parsing: HTMl(Document)를 분석해서 Object로 만드는 과정
-> JS가 동작할 수 있게!
node마다 속성과 메소드를 가진다
실습
getElementsByClassName
querySelectorAll
-> 뒤에 '[2]' 등으로 순서 기재!
-> querySelectorAll
해당 태그 모두 쓰려면 순서 없어도 됨
querySelector
-> .
#
선택자 꼭 쓰기
createElement
에서 append
를 쓸 때 'body' 안의 원하는 위치에 넣고 싶으면 childNodes
이용
document.body.childNodes[5].append(p)
-> 5번째 자식인 'div'안에 'p'태그 삽입 성공!
innerHTML
-> 선택한 태그의 하위 요소로 들어간다
innerText
-> '' 안에 태그를 넣어도 '' 안의 내용이 그대로 텍스트로 보인다
wirte
-> 조심! document.write('hi')
하면 기존 내용 다 지워지고 'hi'만 남게 됨
changeBtn
함수를 console에서 버튼에 이벤트만 추가하는데.addEventListener('click', changeBtn())
.addEventListener('click', changeBtn)
<script>
태그를 <head>
안이 아니라 </body>
앞에 넣는 이유