반응형
클로저가 너무 어렵따.......
- 포인터의 개념을 주소라는 개념으로 받아들이기 시작하면 아주 쉽게 이해하듯이 closure 또한 scope chain에서 하나의 scope를 생성해준다는 개념으로 이해한다면 아주 쉽게 이해가 가능할 것이다.
- 클로저를 이용해 구현하게 되면 컨텍스트에 접근할 때 스코프를 이용해 접근하기 때문에 this라는 키워드를 쓸 필요도 없다. 이렇게 만들어진 카운터는 어느 객체에 붙여서 사용해도 동일한 컨텍스트의 결과를 내주고 이벤트 리스너로 사용해도 동일한 컨텍스트를 유지한 상태로 사용할 수 있다.
var counter = (function() {
var _count = 0;
return function() {
return _count += 1;
};
})();
console.log(counter());
console.log(counter());
////////////////////////////////////
function counterFactory() {
var _count = 0;
return function() {
_count += 1;
return _count;
};
}
var counter = counterFactory();
var counter2 = counterFactory();
console.log(counter()); //1
console.log(counter()); //2
console.log(counter2()); //1
////////////////////////////////////
var counter = counterFactory();
var app = {
counter: counter
};
var app2 = {
counter: counter
};
console.log(app.counter()); //1
console.log(app.counter()); //2
console.log(app2.counter()); //3
- 은닉화의 측면에서 본다면 오히려 객체보다는 클로저의 활용에서 더 극대화된다. _count라는 변수는 외부에서 접근할 방법이 전혀 없기 때문이다. 자바스크립트의 모든 객체는 프로퍼티들의 외부 접근이 모두 허용된다. 클로저 외에는 차단할 방법이 전혀 없다.
728x90
반응형
'TIL > FE 지식' 카테고리의 다른 글
8. 브라우저 저장소의 차이점 (LocalStorage, SessionStorage, Cookie) (0) | 2023.03.05 |
---|---|
33. Virtual DOM (0) | 2023.02.05 |
Front-end 지식 목록 (0) | 2023.01.31 |