- 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는 바뀌게 된다.
함수(){
접근 불가능한 식별자
return 함수(){
...
}
}
var 식별자 = 함수();
위와 같은 형태로 작성된다.
function create(name) {
var _name = name;
return function() {
console.log(_name);
}
}
var hello = create('민수');
hello(); //민수
여기서는 외부에서 _name에 접근할 방법이 전혀 없다. 이렇게 클로저를 활용하여 은닉화를 해결할 수 있다.
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
이렇게 객체의 값을 변화시키는 것을 막을 수 있다.