销毁构造函数实例

时间:2015-02-04 19:57:02

标签: javascript oop constructor instances

function ConstructMe(msg) {
    this.message = msg;   
}

instances = {
    instance1: new ConstructMe('msg1'),   
    instance2: new ConstructMe('msg2'),   
    instance3: new ConstructMe('msg3'),   
    instance4: new ConstructMe('msg4'),   
    instance5: new ConstructMe('msg5')
}

如果我有这个构造函数,并且我在一个对象中构建它的实例(如上所示),我将如何在以后销毁它们? 我想确保它们不再可访问,也是为了确保它们不再是无用的地方。

删除对象会有效吗?或者实例只会在内存上的某个地方无名?

在我的情况下,我在应用程序中的某些操作中创建了许多实例,我想确保我保持内存清洁,不要让事情徘徊,混乱......

期待您的反馈

2 个答案:

答案 0 :(得分:4)

Javascript无法正常工作。它是一种garbage collected语言。从技术上讲,你可以做类似的事情:

delete instances.instance3;

应该从instances对象中删除属性,但实际上你很少需要担心它。在*

之后,JavaScript运行时将负责清理

*从技术上讲,你仍然可以在javascript中创建内存泄漏,但在绝大多数情况下你都不必担心它。

答案 1 :(得分:1)

JavaScript内存管理的核心概念是可达性的概念。

  • 假设一组杰出的对象可以访问:这些对象称为根。通常,这些包括从调用堆栈中的任何位置引用的所有对象(即,当前调用的函数中的所有局部变量和参数),以及任何全局变量。

  • 对象保存在内存中,同时可以通过引用或引用链从根目录访问它们。

  • 浏览器中有一个垃圾收集器,用于清除无法访问的对象占用的内存

所以在你的情况下,如果你的对象实例不再可用,垃圾收集器将自动删除这个对象,你不需要在大多数情况下删除它们自己或进行任何内存管理