详谈js中数组和对象的区别

JavaScript022

详谈js中数组和对象的区别,第1张

学习javascript的时候,我曾经一度搞不清楚”数组”(array)和”对象”(object)的根本区别在哪里,两者都可以用来表示数据的集合。

比如有一个数组a=[1,2,3,4],还有一个对象a={0:1,1:2,2:3,3:4},然后你运行alert(a[1]),两种情况下的运行结果是相同的!这就是说,数据集合既可以用数组表示,也可以用对象表示,那么我到底该用哪一种呢?

我后来才知道,数组表示有序数据的集合,而对象表示无序数据的集合。如果数据的顺序很重要,就用数组,否则就用对象。

当然,数组和对象的另一个区别是,数组的数据没有”名称”(name),对象的数据有”名称”(name)。

但是问题是,很多编程语言中,都有一种叫做”关联数组”(associative array)的东西。这种数组中的数据是有名称的。

Js array被认为是一种万能的数据结构,不仅能当作普通的数组来使用,还可以当作一个栈,一个队列,一个哈希表来使用,更多的时候我们只是把它当作一个数组来使用,所以就先从最熟悉的使用场景来回顾下它.

更多操作

源码中描述,数组实现时有两种模式: fast 快模式,slow 慢模式

快模式:内存是连续的,需要开辟一块相对较大点的内存使用

慢模式:内存是分散的

总的来说就是快模式下通过牺牲内存换取性能,慢模式下是通过牺牲性能获取内存,这就是时间换空间、空间换时间的平衡,看谁划算了.

elements变成了一个慢元素哈希表,哈希表的容量为29。