2013-08-21 133 views
1

请看下面的例子:JS对象指针

var a = new A(); 
b = a; 

A为对象 我想删除B和在同一时间所有的指针,其指向同一个对象! 但我只能访问b。请给我解决方案,我可以删除b和a同时只访问b!

+1

据我所知,你不能[删除](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete)变量。您只能删除属性(全局变量是* window *对象的属性)。 – ComFreek

回答

1

一个解决方案,“删除”b和a在同一时间只访问b!

您不能通过一个命令删除所有现有的引用,您需要手动执行(要求每个引用持有者忽略其值)。

您将需要访问保存的值的所有变量,在这里

b = null; 
a = null; 
// now it can be garbage-collected 
3

如果你没有指定临时值的全局变量,你应该甚至不应该关心你所描述的问题,因为它采取由垃圾收集者照顾。原理非常简单:只要一个值失去指向它的所有指针,就会被垃圾收集器从内存中删除。

例如,在下面的示例中的变量ab只存在,只要该功能f执行:

var f = function() { 
    var a = new A(); 
    var b = a; 
} 

THEREFOR由于通过的f执行结束时的值new A()失去所有指针它被GC消灭了。