Js中的数据结构真的具有高性能吗?

比如说数组,我们知道

Array.prototype.__proto__ === Object.prototype//true

var arr = new Array()
arr instanceof Object//true

这么说我们对
数组的操作本质上来说就是对对象的操作,只不过Js恰好提供了一些像数组的方法。
我们给Js中数组、集合添加或减少元素,就是给对象增加或减少属性。
这样,Js中还具有一般意义上的【在数组尾部增删元素代价低,在头部增删元素代价高】的性质吗?

(非科班出生,只是简单的学习过C语言,感觉Js中的数据结构和C中的很不一样,对Js中的数据结构很迷茫)

阅读 2.4k
2 个回答

js中的数组只是高阶对象,或者说,除了那几个原始数据类型外,都是对象。
数组关键的在于排序,如果在最后插入数据,那么对数组而言不需要知道长度;而如果插在首位,那么可以看成是原有的数组元素都向后移动一位。

“数组的操作本质上来说就是对对象的操作”这句话不够严谨啊。

数组在js中虽然是以对象的形式存在,但是和一般的对象Object是不一样的,就比如数组对象会有一个length,一般的Object是没有这个属性的。

所以js中的数组在内存中的状态应该和C语言中链表的形式差不多。

或者说Array实际上是以数组结构为核心的对象,提供的方法帮助你直接去操作了数组的数据结构

“我们给Js中数组、集合添加或减少元素,就是给对象增加或减少属性。”怎么可能是增加减少属性呢,就跟C语言一样也会去开辟空间,持有指针差不多啊。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题