我创建了一个非常简单的空网页,其中只有lodash
库的链接
然后(直接在Chrome控制台中)我创建了一个简单的类:
window.class = function() {
this.bound = _.bind(this.toBind, this);
}
window.class.prototype.toBind = function() {
this.value = 'value';
}
此类的实例只有1个属性value
和2个方法:toBind
和bound
(toBind
的绑定版本)。
然后我通过Chrome开发工具栏 - Snapshot1 - 获取堆快照 - 这是堆的初始状态
然后我创建一个class
的实例并删除它:
window.obj = new window.class()
window.obj = null;
delete window.obj;
最后我拍了另一张快照
我希望obj
实例不再存在,因为没有更多的引用(唯一的一个是window.obj,但在最后一步它已被删除)。但是两个堆快照的比较显示对象仍然存在似乎lodash本身引用它(在Chrome 34.0.1847.131中测试)。
有人可以解释这是否是lodash中真正的内存泄漏?或者这种行为有任何秘密含义吗? 注意:原生bind正常工作 非常感谢!