Javascript 是否可以在Chrome调试器中判断两个对象是否相同?

Javascript 是否可以在Chrome调试器中判断两个对象是否相同?,javascript,debugging,object,google-chrome-devtools,Javascript,Debugging,Object,Google Chrome Devtools,在Eclipse中,调试器在每个对象旁边显示一个唯一的会话id(无论如何,对于Java和AS3)。这使得识别出现在多个上下文中的同一对象变得简单 我正在从事一个JavaScript项目,并且希望在Chrome调试器中(例如在“范围变量”窗格中)具有相同的识别对象的能力。浏览器/调试器是否跟踪此信息?是否有一种不同的方法可以跨上下文识别对象,而无需添加代码(这是一种纯粹的IDE方法,适用于任何上下文)。JavaScript没有内存地址。“同一变量”可以使用三等号表示法进行比较(anObjectRe

在Eclipse中,调试器在每个对象旁边显示一个唯一的会话id(无论如何,对于Java和AS3)。这使得识别出现在多个上下文中的同一对象变得简单


我正在从事一个JavaScript项目,并且希望在Chrome调试器中(例如在“范围变量”窗格中)具有相同的识别对象的能力。浏览器/调试器是否跟踪此信息?是否有一种不同的方法可以跨上下文识别对象,而无需添加代码(这是一种纯粹的IDE方法,适用于任何上下文)。

JavaScript没有内存地址。“同一变量”可以使用三等号表示法进行比较(
anObjectReference===anotherObjectReference

技术上这是可能的。如果您使用 ChromeDevToolsforJava(基于Eclipse的调试器)。

至于浏览器内调试器,UI只是缺少用于此目的的UI。我想您应该在以下地址提交此功能请求:


请注意,这根本不是一个地址——Java和JavaScript都会在随机时刻移动内存中的对象。

我相信使用Chrome开发工具可以做到这一点:

  • 在摘要视图中拍摄堆快照并打开控制台
  • 在控制台中打印对象
  • 右键单击控制台输出并选择“在摘要视图中显示”(如果没有看到此选项,则可能没有打开配置文件面板)

  • 这些对象必须存储在内存中的某个地方。Chrome调试器是否有权访问VM的内存地址是另一个问题。
    =
    运算符不比较标识,而是比较值和类型。@piotrdorgost如果类型或值不同,则标识也会不同。否则:(引用MDN)对于除数字以外的所有值,它使用了明显的语义:一个值只等于它自己。因此,对于对象,它绝对可以用来检查标识是否相等。@ericsoco我认为“JavaScript没有内存地址”这句话是完全正确的,因为JavaScript是一种语言,并且在该语言中没有内存地址的概念。这一点总是令人困惑。对于对象,==和===执行相同的操作。“如果两个操作数都是对象,那么JavaScript会比较操作数引用内存中同一对象时相等的内部引用”-根据一些谷歌搜索,Eclipse调试器中的id不是内存地址似乎是正确的。我将编辑我的问题,尽管基本前提仍然存在……感谢Chromium功能/bug报告链接。根据@Beefeach的回答,我提交了Chromium功能请求: