有没有用于Node.js或浏览器的工具,可以让我找出哪些对象包含对对象X的引用?
现在我正在使用Backbone进行前端开发,即使我删除了视图,之后似乎仍然会引用它们。
我怀疑这种行为的原因首先是因为我在Chrome和Mozilla中使用插件/插件进行主干调试。
这确实让我怀疑,这些程序本身是否包含对Backbone对象的引用!
发布于 2015-07-15 12:03:15
首先,遗憾的是,没有办法做到这一点。您可以检查是谁调用了特定变量作为引用的函数和对象。这不是因为Backbone/Node.js,而是Javascript本身。当您替换object/Array时,javascript仅将目标内存地址传递给变量。
但是我假设你有内存泄漏问题的原因很可能不是来自另一个变量的引用,而是事件处理程序,这在Backbone使用中很常见(也称为“僵尸视图”)
在视图中设置事件处理程序后,需要确保在实际删除视图(.remove())之前取消设置所有事件,除非您仅将listenTo用于主干事件,将this.$el用于jQuery事件。因为当您删除视图时,Backbone Core会自动删除通过listenTo和this.$el设置的事件。而由Model.on或global jQuery$设置的事件则不会如此。
因此,请检查您的整个代码是否使用.on或全局jQuery对象来设置事件,如果有,请将它们替换为listenTo或this.$el.on,或者在删除它们之前手动取消设置。
https://stackoverflow.com/questions/31421116
复制相似问题