5

プロトタイプでアクセスできるプライベート変数を JavaScript で作成することは可能ですか? プロトタイプ内からではなく内部からのみアクセスできるため、明らかに機能しない次のことを試しました。barFoo

function Foo() {
    var bar = 'test';
}

Foo.prototype.baz = function() {
    console.log(bar);
};

も使用できないことはわかっています。これは、プロパティが公開this.bar = 'test'されるためです。変数を非公開にする方法ですが、プロトタイプからアクセスできますか?bar

4

1 に答える 1

10

できません-レキシカルスコープの変数にそのスコープ外からアクセスすることは不可能です。

プロトタイプ メソッドは (定義により) すべてのインスタンス間で共有され、そのためには独自のスコープに存在する必要があります。

Douglas Crockford の記事「JavaScript のプライベート メンバー」では、役立つ説明がいくつか提供されていますが、要件を満たす解決策はありません。

于 2012-11-02T21:44:55.150 に答える