2017-02-07 46 views
0

在這個例子中,是否有一個可搜索的唯一標識符(即密鑰,uid等等 - 赦免可能的適當術語的屠殺)來區分ob1和ob2?JavaScript中是否有對象的唯一標識符?

var makeObject = function() { 
return {example: 'property'}; 
}; 

var ob1 = makeObject(); 
var ob2 = makeObject(); 

現在我們知道:

ob1 === ob2; // false 

除了這種不平等的布爾區別,有沒有更低級別唯一的字符被臨時分配給OB1和OB2?如果是這樣,可以通過控制檯訪問這些獨特的角色嗎?

編輯: How to determine equality for two JavaScript objects?真的進入我的問題的差異化方面,所以謝謝你。我覺得我的問題的另一部分更多地關注ob1與ob2相比(實用性和/或用戶可訪問性)的機器級別差異,我相信「記憶中的不同位置」肯定會回答這個問題。

+1

它返回false,因爲obj1和obj2指向的引用不是內存中的同一個空間(都指向不同的對象)。 '{} === {}'也是錯誤的。比較不關心屬性。 –

+1

我相信這是一個重複的問題:http://stackoverflow.com/questions/201183/how-to-determine-equality-for-two-javascript-objects和http://stackoverflow.com/questions/1068834/object -comparison-in-javascript – JohnD

+1

[JavaScript中的對象比較]的可能重複(http://stackoverflow.com/questions/1068834/object-comparison-in-javascript) –

回答

1

是有較低級別的唯一字符被臨時分配給OB1和OB2

簡短的回答:沒有,沒有什麼你可以訪問。

順便說一句,原因obj1obj2不是在你的例子是相等的,因爲他們實際上是在內存指向到不同的地方。這是唯一正在做的比較(這與JavaScript字符串比較不同,比較內存位置,但是字符串本身的值不是而是)。