2017-06-05 61 views
1

我在Javascript中创建了很多对象,我需要能够引用以后再检索,例如通过一个数组。现在我想知道如何保存数组中的对象引用。通过标识符引用Javascript对象或直接引用它?

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

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

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

另外,如果直接保存对象是要走的路,难道是确定使用array.push()新对象添加到阵列?是array.push()创建一个副本还是像变量一样工作?

+1

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

回答

1

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

直接传递对象将使JavaScript引擎直接与对象引用一起工作。这不会影响内存使用情况,只要你不克隆。

1

我相信相关的问题是天气或不保存一个整数,并且稍后使用它作为标识符比保存对该对象的引用更有效。

我会参考数组。参考与数字的大小将可以忽略不计。