Javascript 对象如何删除自身?

上代码:

function A(){
    this.name = "Aiello";
    this.id = 123;
    this.destroy = function(){
        /* Todo */
    }
}

// 创建实例
var a = new A();
// 输出属性
console.log(a.name); // 'Aiello'
// 删除对象自身
a.destory();
console.log(a); // 这里可以是返回 null 或 undefind 或者 报错

这种功能能实现吗?

阅读 11.4k
4 个回答

在对象内部去干掉这个对象似乎不行,因为 this 不能被赋值,不过通常如果想清除引用直接 a = null 即可,GC 会看情况来回收废弃的对象。

如果是想执行一些自己的清理工作,可以这样

this.destroy = function () { /* blablabla */; return null; }
...
a = a.destroy();
  1. 类方法是不允许操作this引用的,所以你的例子中的用法会报错

  2. JavaScript的垃圾回收机制是它自己管理的,我们没有权利越俎代庖

  3. 它的垃圾回收机制判断的标准就是,看还有没有变量在引用内存的这个值,如果没有,那么这块内存就会被回收

  4. 如果你想要删除当前实例,可以直接使用a = null;,假如这个实例除了a之外再没有别的引用了,那么引擎会自动将它回收。

你说的删除是指哪种,如果仅仅指的是不再引用,你何必调用方法呢,直接a = null不就行了,如果指的是从内存中删除,我们是没有这个权限的,各个JS引擎都有自己的GC机制,况且JS主要作为一门客户端语言,如果连内存都要像C一样自己去释放,未免了太过麻烦了

因为想实现一个更容易的管理方法,就是只需要调用 destroy 就行了.看来还是需要按套路来.谢谢大家了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题