2016-11-26 41 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是如何工作的。