var GlobalObject = (function(){
var arr1 = [];
var arr2 = [];
var arr3 = [];
var arr4 = [];
return {
}
})();
答案 0 :(得分:2)
arr1
仅在GlobalObject
函数的范围内定义。如果要全局访问它,则需要让GlobalObject
函数返回对它的引用。阅读functional scope in javascript以更好地理解这一点。目前,您的函数返回一个空对象。你想做这样的事情:
...
return {
"array1": arr1,
"array2": arr2,
"array3": arr3,
"array4": arr4
};
(尽管您可以通过不返回来维护这些数组的隐私)
GlobalObject
将保留arr1
的引用和值,直到您手动取消引用它(将其设置为null
)。 Javascript's garbage collector仅删除不再需要的对象。
您当前的代码显示没有内存泄漏。注意circular references and closures。
答案 1 :(得分:1)
arr1
作为返回对象的属性值公开,否则不能。对于(1),您必须确保返回的对象的一个属性是对数组的引用:
// ...
return {
whatever: arr1,
// ...
};
至于内存泄漏,没有任何关于这样的设置特别有问题。