자바스크립트 클래스에서 클로저를 활용하는 방법은 무엇인가요?
- 외부 함수로 클로저 생성하기: 클래스 내에서 메서드를 정의하는 대신, 외부 함수로 클로저를 생성하고 해당 메서드를 클로저 내에서 정의하는 방법입니다. 이를 통해 클로저 내부에서 생성된 변수는 해당 외부 함수의 지역 변수가 되며, 외부에서 접근할 수 없습니다.
예시 코드:
function MyClass() {
var privateVariable = 'Private'; // 외부에서 접근할 수 없는 변수
function privateMethod() { // 외부에서 접근할 수 없는 메서드
console.log(privateVariable);
}
return {
publicMethod: function() { // 외부에서 접근 가능한 메서드
privateMethod();
}
};
}
- 생성자 함수와 프로토타입을 이용하여 클로저 생성하기: 클래스로 사용될 생성자 함수 내에서 클로저를 생성하고, 프로토타입 객체를 통해 메서드를 정의하는 방법입니다. 이를 통해 인스턴스마다 공유되는 변수와 메서드를 구현할 수 있습니다.
예시 코드:
function MyClass() {
var privateVariable = 'Private'; // 외부에서 접근할 수 없는 변수
this.publicMethod = function() { // 외부에서 접근 가능한 메서드
console.log(privateVariable);
};
}
MyClass.prototype.sharedMethod = function() { // 인스턴스들이 공유하는 메서드
console.log('Shared method');
};
var instance1 = new MyClass();
var instance2 = new MyClass();
console.log(instance1.privateVariable); // undefined
instance1.publicMethod(); // "Private"
instance2.sharedMethod(); // "Shared method"
클로저를 활용하면 자바스크립트 클래스에서 데이터를 보호하고 외부에 노출되지 않는 메서드를 구현할 수 있습니다. 이를 통해 객체 지향 프로그래밍의 상속이나 캡슐화 개념을 자바스크립트에서 구현하는 데 유용합니다.
#JavaScript #Closure