0

当您需要清除数据并放入新数据时,JavaScript 中的良好做法或“正确”做法是什么?

我使用 Dojo 的 Memory 和 dGrid 来显示我的数据。每次用户单击“刷新”按钮时都会检索数据。

在应用程序的生命周期内不会多次调用刷新按钮。我有以下网格代码

data = {some JSON data};
store = new Memory({data: data});

grid = new OnDemandGrid({
    selectionMode: 'single',
    store: store
});

并且上面的代码当前在初始化应用程序的方法中运行。

我还有另一种方法称为“ showGrid”,它将决定网格的布局。

然后当应用程序接收到带有新数据的消息时更新存储。

我担心的是,内存没有清除数据的方法。所以我必须遍历商店并推送新数据。也许如果我不重复使用商店而只是创建新商店,它会更容易或更快。

那我为什么不在 ' showGrid' 方法中创建商店并让它在每次用户单击刷新时创建商店?速度或内存在应用程序中不是一个大问题,因为数据不是那么大。

但是我想以“正确的方式”来实现这一点,因为在我的大学时代,我学会了在可重用时创建新对象很重要(尽管它是 Java 类而不是 JavaScript)。

提前致谢 :)

4

1 回答 1

1

好吧,尽可能直接地回答问题:

释放内存真的不取决于 Dojo。这取决于构建 Dojo 的 JavaScript。

要释放 JavaScript 中的内存,您只需删除对数据的所有引用,JavaScript 会自行清除垃圾......所以释放您创建的对象的正确方法很简单:

grid = null;

这应该清除此引用以及对相同数据的任何其他引用。

至于擦除和重写数据的“良好做法”......我通常不知道。

您可以删除旧的,然后创建一个新的......或者简单地覆盖这个......即使在一个相对较大的应用程序中,我不相信你会看到很多性能损失或获得任何一种方式。

例外情况是,如果您有足够大的数据网格来占用大量内存,并尝试在删除旧的之前创建一个新的。但这是一个延伸。

在这种情况下,丑陋的优化将无法真正提高性能,并且会花费您开发和故障排除的时间和精力。

老实说,我通常会先选择最易读的解决方案,然后再进行优化(仅在必要时)。

我经常发现简化和清理代码可以神奇地消除性能瓶颈,这一切都靠自己。

于 2013-08-23T02:40:25.887 回答