코어자바스크립트 5장 part2 ( 클로저 : 정보은닉 )
클로저가 발생하는 경우
- return에 의해서
- setInterval/setTimeout
- eventListener
클로저의 메모리 해제 방법
함수 참조를 끊음
식별자 = null
형태로 한다.
클로저의 활용 사례
- 콜백함수 내부에서 외부 데이터를 사용하고자 할때
- 접근 권한 제어(정보 은닉)
생성자 함수를 통해 객체 만들기
function Create(name,age) {
this._name = name;
this._age = age;
console.log(this) //Create {_name: "민수", _age: 20}
}
var obj = new Create('민수',20);
console.log(obj._name); //민수
생성자 함수를 통해 obj라는 객체를 생성한 것을 알 수 있다.
obj._age = 100;
console.log(obj._age); //100
위의 코드를 추가한다면 age는 바뀌게 된다.
클로저 : 접근 권한 제어1 (함수 예시)
함수(){
접근 불가능한 식별자
return 함수(){
...
}
}
var 식별자 = 함수();
위와 같은 형태로 작성된다.
function create(name) {
var _name = name;
return function() {
console.log(_name);
}
}
var hello = create('민수');
hello(); //민수
여기서는 외부에서 _name에 접근할 방법이 전혀 없다. 이렇게 클로저를 활용하여 은닉화를 해결할 수 있다.
클로저 : 접근 권한 제어2 (객체 예시)
Object.freeze 사용하기
const obj = {
prop: 42
};
Object.freeze(obj);
obj.prop = 33;
// Throws an error in strict mode
console.log(obj.prop);
// expected output: 42
이렇게 객체의 값을 변화시키는 것을 막을 수 있다.
출처
Author And Source
이 문제에 관하여(코어자바스크립트 5장 part2 ( 클로저 : 정보은닉 )), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@khw970421/코어자바스크립트-5장-part2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)