앞선 아티클에서 작성한 예제 코드를 다시 한번 살펴보겠습니다. 이 코드는 사용하는 데 있어서 한 가지 문제점이 있다는 말씀을 드렸죠?
var Rapper = function(arg) {
var rapName = arg ? arg : "MC JOHN DOE";
return {
getName : function() {
return rapName;
},
setName : function(arg) {
rapName = arg;
}
};
};
var hype = Rapper();
// var hype = new Rapper(); 도 가능
console.log(hype.getName());
hype.setName("JAMBINO");
console.log(hype.getName());
여기서 반환받은 객체는 Rapper 객체의 프로토타입에 접근하기 어렵다는 제약 조건이 생기게 됩니다. 이를 보완하기 위해서, 객체가 아닌 '함수'를 반환하는 것이 더 활용에 용이한 방법입니다.
var Rapper = function(arg) {
var rapName = arg ? arg : "NEWBIE";
var Func = function() {};
Func.prototype = {
getName : function() {
return rapName;
},
setName : function(arg) {
rapName = arg;
}
};
return Func;
}();
var hype = new Rapper();
console.log(hype.getName());
우선 위 예제에서도 rapName에 접근할 수 없도록 선언하였고, 클로저 Func가 참조하는 rapName 프로퍼티가 자유 변수가 됩니다. 여기서는 사용자가 직접 rapName에 접근할 수 없으며 Func의 프로토타입 메서드를 통해 접근하게 됩니다.
'Programming > Javascript' 카테고리의 다른 글
13. Javascript 객체지향 프로그래밍(5) - subClass 구현하기 2 (0) | 2023.01.03 |
---|---|
13. Javascript 객체지향 프로그래밍(5) - subClass 구현하기 1 (0) | 2022.12.30 |
13. Javascript 객체지향 프로그래밍(4) - 캡슐화 구현 1 (0) | 2022.12.21 |
13. Javascript 객체지향 프로그래밍(3) - 클래스 기반 상속 구현 4 (0) | 2022.12.13 |
13. Javascript 객체지향 프로그래밍(3) - 클래스 기반 상속 구현 3 (0) | 2022.12.12 |