【问题标题】:Get all object references in Javascript [duplicate]获取Javascript中的所有对象引用[重复]
【发布时间】:2016-07-19 10:21:05
【问题描述】:

考虑以下代码:

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

现在我想获取其中一个对对象的所有 4 个引用的列表 (ob, ref1, ref2, ob2.ref3)

有可能吗?如果没有,有没有办法获取对象有多少引用?

更新

解释

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

【问题讨论】:

  • 不,这是不可能的。为什么你甚至需要它们?所有这些参考都是完全相同的。
  • 不,值对保存它们的变量/属性一无所知
  • 你想如何获得那些“参考”?这是比较没有意义的。您不能将“变量”放入变量中。您可以假设将 变量名称 作为字符串获取,但这也毫无意义,因为这些名称在不同范围内表示不同的东西。
  • 你应该信任这里的垃圾收集器。它知道 :)

标签: javascript


【解决方案1】:

不,你不能那样做。

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

1尤其是因为 JavaScript 在代码级别没有引用单个变量的概念,因此枚举无法为您提供信息,因为它不能指向变量。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 2014-12-24
      • 2012-03-04
      • 2011-09-20
      • 2011-07-11
      • 1970-01-01
      • 2011-05-22
      相关资源
      最近更新 更多