比如说数组,我们知道Array.prototype.__proto__ === Object.prototype//truevar arr = new Array()arr instanceof Object//true这么说我们对数组的操作本质上来说就是对对象的操作,只不过Js恰好提供了一些像数组的方法。我们给Js中数组、集合添加或减少元素,就是给对象增加或减少属性。这样,Js中还具有一般意义上的【在数组尾部增删元素代价低,在头部增删元素代价高】的性质吗?(非科班出生,只是简单的学习过C语言,感觉Js中的数据结构和C中的很不一样,对Js中的数据结构很迷茫)
2 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
“数组的操作本质上来说就是对对象的操作”这句话不够严谨啊。
数组在js中虽然是以对象的形式存在,但是和一般的对象Object是不一样的,就比如数组对象会有一个length,一般的Object是没有这个属性的。
所以js中的数组在内存中的状态应该和C语言中链表的形式差不多。
或者说Array实际上是以数组结构为核心的对象,提供的方法帮助你直接去操作了数组的数据结构
“我们给Js中数组、集合添加或减少元素,就是给对象增加或减少属性。”怎么可能是增加减少属性呢,就跟C语言一样也会去开辟空间,持有指针差不多啊。
添加回答
举报
0/150
提交
取消