指向对象的JS指针[重复]
Posted
技术标签:
【中文标题】指向对象的JS指针[重复]【英文标题】:JS pointer to an object [duplicate] 【发布时间】:2013-08-23 18:26:04 【问题描述】:请看这个例子:
var a = new A();
b = a;
A 是一个对象 我想删除 b 并同时删除所有指向同一个对象的指针! 但我也只能访问 b。请给我解决方案,我可以通过仅访问 b 来同时删除 b 和 a!
【问题讨论】:
据我所知,你不能delete 变量。您只能删除属性(全局变量是 window 对象的属性)。 【参考方案1】:如果你不为全局变量分配临时值,你甚至不应该关心你描述的问题,因为它是由垃圾收集器处理的。原理很简单:一旦一个值失去所有指向它的指针,它就会被垃圾收集器从内存中清除。
例如,在以下示例中,变量 a
和 b
仅在函数 f
执行时才存在:
var f = function ()
var a = new A();
var b = a;
因此,由于在 f
执行结束时,值 new A()
丢失了所有指向它的指针,它被 GC 清除。
【讨论】:
【参考方案2】:通过仅访问 b 来同时“删除”b 和 a 的解决方案!
您不能通过一个命令删除所有现有引用,您需要手动执行(要求每个引用持有者忘记其值)。
您需要在此处访问所有保存该值的变量
b = null;
a = null;
// now it can be garbage-collected
【讨论】:
以上是关于指向对象的JS指针[重复]的主要内容,如果未能解决你的问题,请参考以下文章