2016-07-19 23 views
3

考虑下面的代码:在Javascript中获取所有的对象引用

var ob = {} 
var ref1 = ob; 
var ref2 = ob; 
var ob2 = { ref3: ob }; 

现在,我想其中的一个 (OB,REF1,REF2,ob2.ref3获得4个引用对象的列表)

可能吗?有没有办法获得信息,如果不是,对象有多少引用?

UPDATE

说明

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

+0

不,这是不可能的。为什么你甚至需要他们?所有这些参考都完全相同。 –

+0

不,值不知道任何有关它们的变量/属性 –

+0

你想获得那些“引用”如何?这是毫无意义的。您不能将“变量”放入变量中。你可以假设得到*变量名*作为字符串,但这也没有意义,因为这些名称在不同范围内意味着不同的事情。 – deceze

回答

0

引用不,所有的分配将仍然是相同的对象/地址引用。

5

不,你不能这样做。

JavaScript中没有列举对象的引用的其他副本,也没有功能告诉您存在多少个引用副本。因此,在这个功能缺乏的情况下,要做到这一点,你必须首先找到所有的全局和局部变量,常量,对象属性等可能引用该对象,并将它们与必须的引用进行比较看看他们是否匹配。这是不可能的,你不能访问所有全局变量(从ES2015开始),也不能访问所有局部变量(例如,由闭包引用);如果它可能是,它可能是不切实际的。

这不仅是因为JavaScript有没有在代码级别将各个变量的引用的概念,所以没有办法为枚举为您提供的信息,因为它不能在变量指向你。