对象是一组无序的名称/值对。对象以 {(左大括号)开始,以 }(右大括号)结束。每个名称后跟 :(冒号),名称/值对用 ,(逗号)分隔。
注意 我是 Javascript 新手,从名称 JSON(Javascript 对象表示法)本身来看,我假设 Javascript 中的对象与 JSON 相同。请纠正我,以防我弄错了。
从上面的定义看来,Javascript 对象很可能是由 hashmap 或 BST 或一些类似的数据结构实现的。
但是当我在Node 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对象的底层实现吗?