일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 연산자
- 웹디자인 기능사
- float
- overflow
- Display
- javascript
- 자바
- clear
- Heidi
- mysql
- 자료형
- 자바 환경변수
- 자바 기초
- To Do List
- position
- CSS
- 로또 번호 생성
- JS
- db
- 전자정부프레임워크
- react
- 조건문
- Break Continue
- DropDown
- Openjdk
- java
- switch
- HTML
- do while
- vue
- Today
- Total
잠온다
JS) this, bind 본문
1. this
javascript에서 this는 한마디로 함수를 호출한 객체다. 즉 선언한 시점에서 this가 결정되는 것이 아니라 호출한 시점에서 this가 결정된다.
개발자 도구에서 this를 콘솔에 출력하면 window 객체가 출력된다. window에서 this를 콘솔로 출력했기 때문에 window가 함수를 호출한 객체가 된다.
이렇게 obj라는 객체의 item이 this를 가지고 있고 함수를 호출할 때 그 item을 인자로 받더라도 this를 호출한 객체는 window이기에 console 또한 window가 출력된다.
반대로 이 경우는 window 객체에선 obj 객체의 main이란 함수를 호출한 것이고 결국 console.log 함수의 호출은 obj 객체의 main 함수, 즉 obj가 함수를 호출한 객체이기에 this는 obj 객체가 된다.
위 경우는 console.log 를 호출하는 함수인 func 함수를 그냥 호출했을 때와 obj 객체의 item 값으로 할당해주고 그 item을 호출했을 때의 결과다. 같은 func 함수지만 func 함수를 그냥 호출했을 때는 window 객체가 출력되지만 obj 객체의 item을 호출했을 때는 obj 객체가 출력된다.
2. bind
bind는 this를 원하는 객체로 고정해준다.
이렇게 bind 함수를 통해 func 함수가 호출될 때 this는 { name: 'hong' } 객체로 고정할 수 있다.
bind는 function func() { ~ }.bind 와 같은 형태로 선언과 동시에 호출할 수도 있다.
'Javascript' 카테고리의 다른 글
JS) DOM, node, element, reflow, repaint (0) | 2023.01.04 |
---|---|
JS) 자바스크립트의 메모리 할당, 실행 컨텍스트와 콜 스택 (0) | 2022.08.14 |
JS) 자주 사용하는 ES6 문법 (0) | 2022.07.02 |
JS) var, let, const, 호이스팅 (1) | 2022.06.19 |
JS) 함수와 함수의 호출, (2) | 2022.06.19 |