2016-07-19 22 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有沒有在代碼級別將各個變量的引用的概念,所以沒有辦法爲枚舉爲您提供的信息,因爲它不能在變量指向你。