0

ゲッターとセッターがたくさんあるアプリケーションがある場合、クロージャーを使用してセッターの値を保持する必要があると思いませんか?

これが私がこれまでに得たものですが、これら2つのメソッドは関数(クロージャー)を返す必要があると思います. 2 つが競合するため、 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);
4

1 に答える 1

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'];
    } 
};
于 2013-10-09T17:14:50.163 に答える