指向对象的JS指针[重复]

Posted

技术标签:

【中文标题】指向对象的JS指针[重复]【英文标题】:JS pointer to an object [duplicate] 【发布时间】:2013-08-23 18:26:04 【问题描述】:

请看这个例子:

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

A 是一个对象 我想删除 b 并同时删除所有指向同一个对象的指针! 但我也只能访问 b。请给我解决方案,我可以通过仅访问 b 来同时删除 b 和 a!

【问题讨论】:

据我所知,你不能delete 变量。您只能删除属性(全局变量是 window 对象的属性)。 【参考方案1】:

如果你不为全局变量分配临时值,你甚至不应该关心你描述的问题,因为它是由垃圾收集器处理的。原理很简单:一旦一个值失去所有指向它的指针,它就会被垃圾收集器从内存中清除。

例如,在以下示例中,变量 ab 仅在函数 f 执行时才存在:

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

因此,由于在 f 执行结束时,值 new A() 丢失了所有指向它的指针,它被 GC 清除。

【讨论】:

【参考方案2】:

通过仅访问 b 来同时“删除”b 和 a 的解决方案!

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

您需要在此处访问所有保存该值的变量

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

【讨论】:

以上是关于指向对象的JS指针[重复]的主要内容,如果未能解决你的问题,请参考以下文章

指向从未被设为 const 的 const 对象的 C++ 指针 [重复]

JS------对象的继承方式

js 继承 原型链

从头认识js-js中的继承

JS面向对象——原型链

c ++指针对象列表[重复]