是否有适用于 Node.js 或浏览器的工具,可以让我找出哪些对象持有对对象 X 的引用?
现在我正在使用 Backbone 进行前端开发,即使我删除了 View ,之后似乎仍然会引用它们。
我首先怀疑这种行为的原因是因为我在 Chrome 和 Mozilla 中使用插件/插件进行 Backbone 调试。
这确实让我想知道这些程序本身是否持有对 Backbone 对象的引用!
最佳答案
首先,遗憾的是没有办法做到这一点。 您可以检查谁调用了特定变量作为引用的函数和对象。 这不是因为 Backbone/Node.js,而是因为 Javascript 本身。 当您替换对象/数组时,JavaScript 仅将目标内存地址传递给变量。
但我认为您遇到内存泄漏问题的原因很可能不是因为来自其他变量的引用,而是因为在 Backbone 使用中经常看到的事件处理程序(也称为“僵尸 View ”)
在 View 中设置事件处理程序后,您需要确保在实际删除 View (.remove()
)之前取消设置所有事件,除非您仅使用 listenTo
用于 Backbone 事件,this.$el
用于 jQuery 事件。
因为当您删除 View 时,通过 listenTo
和 this.$el
设置的事件会被 Backbone Core 自动删除。
而由 Model.on
或全局 jQuery$
设置的事件则不会如此。
所以请检查您的整个代码是否使用 .on
还是全局 jQuery 对象来设置事件,如果有,请将它们替换为 listenTo
或 this.$el.on
或在删除它们之前手动取消设置它们。
关于javascript - 查看对象引用的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31421116/