请考虑以下代码:
var ob = {}
var ref1 = ob;
var ref2 = ob;
var ob2 = { ref3: ob };
现在我想通过其中一个获得对象的所有4个引用的列表 (ob,ref1,ref2,ob2.ref3)
有可能吗?有没有办法获取信息对象有多少引用,如果没有?
更新
解释
我需要在第三方类层次结构中注册一个类实例而不是之前的实例,我需要知道引用旧实例的位置
答案 0 :(得分:5)
不,你做不到。
JavaScript中没有用于枚举对象 1 的其他副本的功能,也没有一个功能可以告诉您存在多少个引用副本。因此,在缺少该功能的情况下,您必须首先找到可能引用该对象的所有全局和局部变量,常量,对象属性等,并将它们与您必须查看它们是否匹配的参考。这是不可能的,你不能访问所有全局变量(从ES2015开始),也不能访问所有局部变量(例如,由闭包引用);如果它可能,它可能是不切实际的。
1 尤其是因为JavaScript没有在代码级别引用单个变量的概念,因此枚举无法为您提供信息,因为它不能指向变量。
答案 1 :(得分:0)
不,所有作业仍然是相同的对象/地址参考。