如果变量的成员试图删除变量怎么办?该成员是否仍然存在?

时间:2016-08-23 05:50:48

标签: oop object computer-science

我很长时间以来一直对这个问题感到困惑,而且我不知道这个问题属于哪个计算机科学领域。

更具体地说,我们假设我们有一个变量a并且它是一个对象。 ba的成员,也是对象。

如果b有一种可能会破坏a的方法怎么办?这会发生吗?如果可以,b被销毁后a是否仍然存在?

我认为这个问题与叶子节点试图删除其父节点不同。

结果会因语言而异吗?

如果描述不够明确,我感到很遗憾,因为我还没有真正遇到真实案例。

1 个答案:

答案 0 :(得分:0)

这很大程度上取决于语言。

我认为大多数语言都不允许你明确地销毁一个对象,所以这种情况不会发生。

在许多语言中(例如Java,Perl,JavaScript,Python等),当程序无法再访问对象时,对象会被垃圾收集器破坏,而对象本身就是引用,即a成员b只是意味着a保留对b的引用,所以如果a消失,b没有任何反应(只要你还有一些对b)的其他参考。

在像C ++这样的语言中,您可以显式地销毁对象。然后会发生什么取决于其他详细信息:如果ba的直接成员,那么b会与a一起销毁(如果您仍有指针或引用到b,它变成"悬空",即尝试访问它是错误的)。另一方面,如果b只是指向a或从$(document).ready(function(){ $('#button').click(function(){ var text = $('#input').val(); $.ajax({ type: "GET", url: "reverse.php", data:{ text : text }, success: function(data){ console.log(data); alert(data) } }) }); }); 引用,那么它就会保持活跃状态​​。