创建新对象?或者重用现有的
create new object? or reuse existing one?
当您需要删除数据并放入新数据时,JavaScript中的良好做法或"正确"做法是什么?
我使用Dojo的Memory和dGrid来显示我的数据。每次用户单击"刷新"按钮时都会检索数据。
在应用程序的生命周期内,刷新按钮不会被多次调用。我有以下网格代码
data = {some JSON data};
store = new Memory({data: data});
grid = new OnDemandGrid({
selectionMode: 'single',
store: store
});
并且上面的代码当前在初始化应用程序的方法中运行。
我有另一种方法叫"showGrid
",它将决定网格的布局。
则当应用程序接收到具有新数据的消息时更新存储。
我担心的是,Memory没有清除数据的方法。所以我必须循环浏览商店并放入推送新数据。也许如果我不重用这个商店,只创建一个新的,它会更容易或更快。
那么,为什么我不直接用"showGrid
"方法创建存储,并让它在用户每次单击刷新时创建存储呢?速度或内存在应用程序中不是一个大问题,因为数据没有那么大。
但我想用"正确的方式"来实现这一点,因为我在大学时代就学会了在可重用的情况下创建新对象很重要(尽管它是Java类而不是JavaScript)。
提前感谢:)
好吧,尽可能直接地回答问题:
释放内存实际上不是Dojo的职责;这取决于Dojo所基于的JavaScript。
要释放JavaScript中的内存,只需删除对数据的任何引用,JavaScript就会自行清除垃圾。。。因此,释放您制作的对象的正确方法很简单:
grid = null;
这应该会清除此引用以及对相同数据的任何其他引用。
至于擦除和重写数据的"良好实践"。。。我一般都是不可知论者。
你可以删除旧的,然后创建一个新的。。。或者简单地覆盖这个。。。即使在一个相对较大的应用程序中,我也不相信您会看到任何一种方式都会带来很大的性能提升。
例外情况是,如果您有一个足够大的数据网格来占用大量内存,并试图在删除旧网格之前创建一个新网格。但这是一个延伸。
在这种情况下,丑陋的优化将无法真正提高性能,并且会耗费开发和故障排除方面的时间和精力。
老实说,我通常会先选择可读性最强的解决方案,然后再进行优化(只有在必要时)。
我经常发现,简化和清理代码可以神奇地消除性能瓶颈,这一切都靠它自己。
- 查找关键字并创建新对象
- 创建新对象时,为什么要更新旧对象
- 为什么要使用立即调用的函数来创建新对象
- 剑道网格-插入具有外部列的新对象失败
- 将原型调用为新对象中的另一个原型
- 将新对象添加到本地存储
- $$hashKey在Angular中push()新对象时未生成新值
- 从分析类传递现有对象,否则创建一个新对象
- 为什么这个功能打印“;未定义的未定义的“;作为联系人名称,添加“新对象”
- Will my'新对象'在套接字断开连接时被垃圾收集
- 从数组javascript创建新对象
- 为新对象添加函数,将对象添加到数组中.理解困难'这'关键字
- 在for循环-Javascript中创建新对象
- Javascript:使用一个预先存在的对象值作为一个新对象的键
- 确定是创建新对象还是更新现有对象
- 返回它在Javascript中构建的新对象
- 如何使用Typescript创建一个包含对象的字段的新对象
- Sinon:存根和整个对象,并将其替换为新对象
- JavaScript:创建新对象类型的方法
- 创建新对象?或者重用现有的