如果我有一堆getter和setter的应用程序,那么我认为我需要使用闭包来保持setter的值,不是吗?
这是我到目前为止所做的,但我认为这两种方法应该是返回函数(闭包)。我不认为我应该使用this.local.result,因为这两者会发生冲突。
myApplication = function(){
this.local = {};
};
myApplication.prototype.myFirstMethod = function(){
if (arguments.length) {
this.local.result = arguments[0];
} else {
return this.local.result;
}
};
myApplication.prototype.mySecondMethod = function(){
if (arguments.length) {
this.local.result = arguments[0];
} else {
return this.local.result;
}
};
var app = new myApplication();
app.myFirstMethod(1);
result = app.myFirstMethod();
console.log(result);
答案 0 :(得分:1)
使用闭包的目的是使变量保持私有(不能直接从全局范围访问)。
以下是如何使用闭包:
myApplication.prototype.myFirstMethod = (function () {
var data = '';
return function () {
if (arguments.length) {
data = arguments[0];
} else {
return data;
}
}
})();
如果您不需要将数据设为私有,则可以执行以下操作:
myApplication.prototype.myFirstMethod = function(){
if (arguments.length) {
this.local['firstData'] = arguments[0];
} else {
return this.local['firstData'];
}
};