2013-08-21 137 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消滅了。