在Javascript中获取所有对象引用

7
考虑以下代码:
var ob = {}
var ref1 = ob;
var ref2 = ob;
var ob2 = { ref3: ob };

现在我想要获取一个对象的所有4个引用列表(ob,ref1,ref2,ob2.ref3)

这可能吗?如果不行,有没有办法获取对象有多少个引用?

更新

说明

我需要在第三方类层次结构中注册一个类实例,而不是以前的实例,并且我需要知道旧实例从哪里引用。


不,这是不可能的。你为什么需要它们?所有这些引用都是完全相同的。 - vp_arth
不,值并不知道持有它们的变量/属性的任何信息。 - Patrick Evans
你想如何获取那些“引用(reference)”? 这相当无意义。 你不能把“变量(variables)”放入变量中。你可以假设将*变量名(variable names)*作为字符串获取,但这也相当无意义,因为在不同的作用域(scope)中,这些名称表示不同的含义。 - deceze
在这里你应该相信垃圾回收器。它 懂得 :) - vp_arth
2个回答

7

不,你不能这样做。

在JavaScript中,没有功能用于枚举对象的其他引用副本1,也没有功能告诉您引用的副本数量。因此,在缺少该功能的情况下,要实现它,您首先必须找到所有全局和局部变量、常量、对象属性等,这些变量可能会引用该对象,并将它们与您拥有的引用进行比较,以查看它们是否匹配。这是不可能的,您无法访问所有全局变量(根据ES2015),也无法访问所有局部变量(例如闭包引用);如果可能,则可能是不切实际的。

1 尤其是因为JavaScript在代码级别上没有单独变量的引用概念,因此枚举无法向您提供信息,因为它无法指向变量。


0
不,所有的作业仍然是同一个对象/地址引用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接