Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 싸피 면접 후기
- 세마포어
- 동기화
- 최단 경로
- 프록시
- 플로이드 와샬
- 세마포어와 뮤텍스
- 싸피
- 호스팅
- 웹 호스팅
- 호스팅이란?
- 세마포어와 뮤텍스의 차이
- 뮤텍스란?
- 다익스트라
- 다익스트라 알고리즘
- 뮤텍스
- 프록시서버
- 세마포어란?
- Synchronization
- Proxy
- 삼성 청년 SW 아카데미
- 싸피 합격
- Proxy Server
- 클라우드 서버
- 플로이드 워셜
- SSAFY
- floyd-warshall
- 서버 호스팅
- Dijkstra Algorithm
Archives
- Today
- Total
어제의 나보다 성장한 오늘의 나
[자바스크립트] ES6에서의 this 바인딩 본문
먼저 ES6 이전에 this 바인딩이 어떻게 되는지 한번 보자 만약 자세한 내용을 알고 싶다면? 호출 패턴과 this바인딩
var value = 0
var obj = {
value: 1,
setValue: function () {
this.value = 2; // this -> obj
(function () {
this.value = 3 // this -> window
})();
}
}
obj.setValue()
console.log(value) // 출력 3
console.log(obj.value) // 출력 2
위와 같이 obj() 안에 프로퍼티로 setvalue 메서드를 선언하면 this는 obj가 된다. 그렇다면 그 메서드 안에서 즉시 실행 함수를 정의하면 this는 어떻게 될까? 바로 window를 바라보게 된다 즉! 전역 변수를 업데이트하게 되고 console.log(value)의 값이 3이 나오는 것이다.
그러면! 여기서 어떻게 즉시 실행 함수에서도 똑같은 obj를 접근할 수 있게 할까?
var value = 0
var obj = {
value: 1,
setValue: function () {
var self = this
self.value = 2;
(function () {
self.value = 3
})()
}
}
obj.setValue()
console.log(value)
console.log(obj.value)
대표적으로 위와 같이 선언하여 this에 접근할 수 있다.
이제 ES6로 넘어와서는 어떻게 사용할까
let value = 0
let obj = {
value : 1,
setValue : function () {
this.value = 2
{
this.value = 3
}
}
}
obj.setValue()
console.log(value)
console.log(obj.value)
스코프를 만들고 싶지만? 스코프 안에 동일하게 this를 사용하고 싶다면 블록 스코프를 사용하면 된다. 블록 스코프는 this의 영향을 받지 않는다.
출처
'공부 > JavaScript && jquery' 카테고리의 다른 글
[자바스크립트] var, let의 전역객체에 대해서... (0) | 2021.04.26 |
---|---|
[자바스크립트] Object.freeze와 Deep Copy(assign) (0) | 2021.04.26 |
[자바스크립트][ES6] 함수 스코프, 블록 스코프 (0) | 2021.04.26 |
JavaScript 엔진 작동원리 (0) | 2021.04.26 |
[자바스크립트] 클로저 (0) | 2021.04.24 |
Comments