5

JavaScript の Revealing Prototype Pattern のプライベート変数に問題があります。共有 (シングルトン) プロトタイプ内のいくつかの異なる関数で使用されるプライベート変数を公開せずに使用する方法がわかりません。JSFiddleで私が意味することの例を次に示します。

問題は、var v対の使用にありthis.vます。1 つ目はすべてのインスタンスの状態を台無しにしますが、2 つ目は公開されています。v を非公開にし、個々のインスタンスごとにその状態を保持する方法はありますか?

4

1 に答える 1

7

明らかなプロトタイプ パターンでそれを行う方法はありません。

次のようなものでのみそれを行うことができます:

function MyClass() {
    var v = 1;
    this.getV = function() {
        return v;
    };
}

だからこそ、この種のアプローチに熱狂的なファンがいるのです。

個人的なオプション: アンダースコアを前に付けて、オブジェクトに付けます: this._v. JavaScript と戦わないでください。これを使って。

于 2013-11-03T08:50:21.850 に答える