如何在javascript中获取对象“地址”?

wfsdck30  于 2022-09-26  发布在  Java
关注(0)|答案(5)|浏览(648)

嗯,我不确定我是否清楚地描述了这个问题,目前我正在使用ExtJS进行一些开发,我看到一些对象是“singleton”,例如“Ext.Viewport”,在C++中,我可以获取对象的地址,看看它们是否是同一个对象,在Python中,我能使用“id”函数获取对象的哈希代码,在Java中,我有类似的内置函数“hashCode”来检查对象是否真的是相同的对象,javascript中有类似的方法吗?因此,如果javascript中有一些函数或运算符,那么我可以判断ExtJS中定义为“singleton”的对象是否真的引用了相同的对象。

gkn4icbw

gkn4icbw1#

你不需要这么复杂的东西。如果两个值是同一对象,则它们将相等。

var foo = {};
var bar = foo;
alert(foo == bar);

如果它们是不同的(即使是相同的)对象,它们就不会是。

var foo = {};
var bar = {};
alert(foo == bar);
wtlkbnrh

wtlkbnrh2#

你的问题不太清楚,但我会尽力回答。
默认情况下,Javascript本身不为每个对象使用唯一标识符。如果你想,你可以添加这个。
根据您的需求,还可以使用typeof运算符来比较类型。
然而,ExtJ确实使用唯一的id(id或itemId),并且还允许您获取所使用对象的类名。因此,您可以在ExtJ中轻松做到这一点。
答案取决于您是在比较对象的类型,还是实际的对象示例本身。
其他SO answer可能有益

qncylg1j

qncylg1j3#

I think that I'm understanding you... but, did you check this JavaScript comparator ?

=== -  equal value and equal type
!== - not equal value or not equal type

reference: Javascript comparators

0kjbasz6

0kjbasz64#

如果要知道两个对象引用是否引用同一个单个对象示例,请使用==
如果要对引用的对象进行深入比较,以查看对象是否包含所有相同的值,即使它们不是相同的对象示例,请使用Lodash的e1d1e方法。

brtdzjyr

brtdzjyr5#

也可以将两者转换为json,并使用类似于jsonDiff:https://github.com/pkafel/json-diff的内容

相关问题