0

公開モジュール パターンを使用して、非静的プライベート変数への直接アクセスを提供するにはどうすればよいですか? ここに私が持っているものがあります:

var M = function () {
    var obj = {};
    var arr = [];
    var change = function () {
        obj = {"key":"if I see this, O is a reference to obj"};
        arr.push("If I see this, A is a reference to arr")
        };
    return {
        change: change,
        O: obj,
        A: arr
        };
}();

M.change();
console.log(M.A); // prints ["If I see this, A is a reference to arr"] 
console.log(M.O); // prints Object {}, wanted "if I see this, O..."

A は arr を直接参照するようですが、O は初期化時に obj の値のコピーに落ち着きます。obj が string、float、または boolean の場合の動作は理解できます。

もちろん、パブリックな get_obj メソッドを介して obj を公開することもできますが、ヘルプ メソッドを追加せずにこれを解決できるかどうか、まだ興味があります (obj へのインターフェイスをそのまま維持したい)。さらに、オブジェクトが持たない配列の何が特別で、この動作を引き起こすのでしょうか?

洞察力に本当に感謝します。

4

1 に答える 1