2017-06-05 77 views
1

我在Javascript中創建了很多對象,我需要能夠引用以後再檢索,例如通過一個數組。現在我想知道如何保存數組中的對象引用。通過標識符引用Javascript對象或直接引用它?

對象將與外部庫進行交互,該外部庫可以使用對象ID或對象本身運行。我知道Javascript將對象變量視爲指針而不是對象副本,因此直接引用對象是否安全?

起初我在想「如果我保存對象的ID,這將保持內存使用率低」,但這是真的嗎?對象變量*消耗多少內存與整數變量?

*指針指向的對象,而不是對象數據

另外,如果直接保存對象是要走的路,難道是確定使用array.push()新對象添加到陣列?是array.push()創建一個副本還是像變量一樣工作?

+1

「[[]]是否可以直接引用對象?」是。 「對象變量*消耗多少內存而不是整數變量?」 - 沒有指定,但這裏的任何內存使用情況是完全可以忽略的。優化JS編譯器可以非常有效地存儲緊湊的31位有符號整數數組(每個整數32位)。對象(引用)可能佔用64位? –

回答

1

是的,你可以直接引用對象。如果你真的關心內存使用情況,我會說傳遞id的方式會使用更多的內存,因爲你必須維護另一組映射。

直接傳遞對象將使JavaScript引擎直接與對象引用一起工作。這不會影響內存使用情況,只要你不克隆。

1

我相信相關的問題是天氣或不保存一個整數,並且稍後使用它作爲標識符比保存對該對象的引用更有效。

我會參考數組。參考與數字的大小將可以忽略不計。