一個目的官方文檔是一組無序名稱/值對。一個對象以{(左大括號)開始 ,並以}(右大括號)結束。每個名稱都是 ,後跟:(冒號),名稱/值對由 (逗號)分隔。
注意 我的Javascript新手,並在Javascript從名字JSON(JavaScript對象符號)本身,我假設的對象是一樣的JSON。如果我弄錯了,請糾正我的錯誤。
從上面的定義看來,Javascript對象最有可能是由散列圖或BST或一些類似的數據結構實現的。
但是當我在節點 shell中插入鍵值對時,它們以串行方式插入。這是我在節點殼試過現在
> var a = {}
undefined
> a['k1'] = 'a1'
'a1'
> a['k3'] = 'a3'
'a3'
> a['k2'] = 'a2'
'a2'
> a['k4'] = 'a4'
'a4'
> a['k5'] = 'a5'
'a5'
> a
{ k1: 'a1',
k3: 'a3',
k2: 'a2',
k4: 'a4',
k5: 'a5' }
,上打印a
關鍵值對在相同的順序插入返回。所以我的問題是:
- 我可以快速查找關鍵嗎?我的意思是O(log(n))或更好的複雜性。
- 如果JSON不使用像BST,HashMap或類似的DS這樣的數據結構,那麼JSON對象究竟是如何置於內存之下的呢?
更新 好了,怎麼樣JavaScript對象。有人可以評論Javascript對象的底層實現。
JSON是一種符號,就像XML是另一種符號。儘管它基於Javascript對象,因此它的名字很高。除此之外,沒有關係。 –
沒有「JSON對象」。即使名稱應該告訴(「對象符號對象」?) – JJJ
@FlorianMargaine感謝隊友爲您的評論。這很有幫助。 –