【问题标题】:Javascript reference object by an identifier or reference it directly?Javascript 通过标识符引用对象还是直接引用它?
【发布时间】:2017-11-06 08:43:33
【问题描述】:

我在 Javascript 中创建了很多对象,我需要能够引用它们以便稍后检索,例如通过数组。现在我想知道如何将对象引用保存在数组中。

对象将与外部库交互,该库可以使用对象 ID 或对象本身来运行。我知道 Javascript 将对象变量视为指针而不是对象副本,所以直接引用对象是否安全?

起初我在想“如果我保存对象的 ID,那么内存使用率会很低”,但这是真的吗?与整数变量相比,对象变量* 消耗多少内存?

*指向对象的指针,而不是对象数据

另外,如果直接保存对象是要走的路,可以使用array.push() 将新对象添加到数组中吗? array.push() 是在创建副本还是像变量一样工作?

【问题讨论】:

  • "[...] 直接引用对象是否安全?"是的。 “与整数变量相比,对象变量*消耗多少内存?” - 没有指定,但这里的任何内存使用都完全可以忽略不计。优化 JS 编译器非常有效地存储紧凑的 31 位有符号整数数组(每个整数 32 位)。对象(引用)可能占用 64 位?

标签: javascript object memory


【解决方案1】:

我认为相关的问题是天气或不保存整数,以后将其用作标识符比保存对对象的引用更有效。

我会使用数组中的引用。参考与数字的大小可以忽略不计。

【讨论】:

    【解决方案2】:

    是的,您可以直接引用对象。如果您真的关心内存使用情况,我会说传递 id 的方式会使用更多内存,因为您必须维护另一组映射。

    直接传递对象将使 JavaScript 引擎直接使用对象引用。只要您不进行任何克隆,这不会影响内存使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多