var GlobalObject = (function(){
var arr1 = [];
var arr2 = [];
var arr3 = [];
var arr4 = [];
return {
}
})();
- 现在我将如何在应用程序中调用 GlobalObject.arr1 ?
- 当我进行推送和弹出时,它会保持其参考和价值吗?
- 这会导致任何内存泄漏吗
var GlobalObject = (function(){
var arr1 = [];
var arr2 = [];
var arr3 = [];
var arr4 = [];
return {
}
})();
arr1
仅在GlobalObject
函数范围内定义。如果要全局访问它,则需要让GlobalObject
函数返回对它的引用。阅读javascript 中的功能范围,以便更好地理解这一点。当前,您的函数返回一个空对象。你想做这样的事情:
...
return {
"array1": arr1,
"array2": arr2,
"array3": arr3,
"array4": arr4
};
(尽管您可以通过不返回它们来维护这些数组的隐私)
将GlobalObject
保持arr1
的引用和值,直到您手动取消引用它(将其设置为null
)。Javascript 的垃圾收集器只删除不再需要的对象。
您当前的代码显示没有内存泄漏。注意循环引用和闭包。
arr1
作为返回对象的属性值公开对于 (1),您必须确保返回的对象的属性之一是对数组的引用:
// ...
return {
whatever: arr1,
// ...
};
至于内存泄漏,这样的设置没有什么特别成问题的。