关于Javascript的Object和Array的存储数据结构

1.Array的长度可变,那么内部是如何实现的(问的是底层的数据结构)?比如是类似Java中ArrayList的机制
2.Object的属性数量也可变,内部是如何实现的?
3.会不会不同的浏览器实现原理不同?

第1个问题其实和第2个问题是一个意思,都是问的底层的数据结构。我在网上看到Array其实就是Object。那么是不是Array的元素本质上就是Object中以0,1,2,3,4为key的属性键值对?

1个回答

(1)在内部,array有额外的单元存储数组的长度。java c# python等比C++高级的语言,都会记录数组长度,因此,它们都是可以运行时获取数组长度的。
(2)内部相当于一个字典,属性名是字典的key,属性值是字典的 value,类似java的hashmap
(3)肯定实现原理不同,但是表现出来的形式应该类似。早期的浏览器,比如IE8都是解释执行,而现代的chrome用的v8,则使用jit编译和类型化等技术来为js加速。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐