使用原型来定义getter / setter

时间:2013-10-09 16:54:57

标签: javascript getter-setter

如果我有一堆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);

1 个答案:

答案 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'];
    } 
};