上代码:
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 或者 报错
这种功能能实现吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
在对象内部去干掉这个对象似乎不行,因为
this不能被赋值,不过通常如果想清除引用直接a = null即可,GC 会看情况来回收废弃的对象。如果是想执行一些自己的清理工作,可以这样
类方法是不允许操作
this引用的,所以你的例子中的用法会报错JavaScript的垃圾回收机制是它自己管理的,我们没有权利越俎代庖
它的垃圾回收机制判断的标准就是,看还有没有变量在引用内存的这个值,如果没有,那么这块内存就会被回收
如果你想要删除当前实例,可以直接使用
a = null;,假如这个实例除了a之外再没有别的引用了,那么引擎会自动将它回收。你说的删除是指哪种,如果仅仅指的是不再引用,你何必调用方法呢,直接
a = null不就行了,如果指的是从内存中删除,我们是没有这个权限的,各个JS引擎都有自己的GC机制,况且JS主要作为一门客户端语言,如果连内存都要像C一样自己去释放,未免了太过麻烦了因为想实现一个更容易的管理方法,就是只需要调用 destroy 就行了.看来还是需要按套路来.谢谢大家了