使用揭示模块模式,如何提供直接访问非静态私有变量?这就是我所拥有的:
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是字符串,浮点数或布尔值,我会理解行为。
我当然可以通过公共get_obj方法公开obj,但我仍然很好奇,如果没有其他帮助方法可以解决这个问题(我想保持接口到obj完整)。此外,对象没有的数组有什么特别之处,导致这种行为?
非常感谢任何见解,
答案 0 :(得分:1)
obj["key"] = "if I see this, O is a reference to obj";
您可以为key
设置obj
属性,并保留对原始对象的引用。