2016-11-26 33 views
0

說我有這樣的代碼如下:銷燬打字稿中的循環引用實例?

class A 
{ 
    b: B; 
    constructor() 
    { 
     this.b = new B(this); 
    } 
} 

class B 
{ 
    a: A; 
    constructor(a: A) 
    { 
     this.a = a; 
    } 
} 
let a= new A() 

當我要摧毀的實例:

我應該只是

a=null; 

a.b.a=null; 
a=null; 

有什麼辦法編寫代碼,測試結果嗎?說一些代碼來檢測內存中某些類的實例號?

+1

如果沒有對a或b的引用,它將被垃圾收集器標記爲不可訪問並一起清理,您不必做任何事情。 – toskv

+0

@toskv所以如果只有一個引用,當我使用'a = null'。即使a和b是循環引用,b也是gc自動的? – AlexWei

+0

是的,只要沒有人提及他們。 – toskv

回答

1

如果沒有對a或b的引用,它將被垃圾收集器標記爲無法訪問並一起清理,您不必手動執行任何操作。

你可以找到更多關於垃圾收集器在JavaScript here是如何工作的。