数组和对象的区别

3,089 阅读1分钟

数组是一组排列有序的值,每个值都有对应的下标,下标从0开始。 JS里面的数组定义:用Array构造出来的对象。 object是Object构造出来的对象,array是Array构造出来的对象,后者是一种特殊的对象。 数组和对象的内存相同;区别在于原型链不同;数组有数组的特点,而对象没有数组的特点。 数组和对象的本质区别:__proto__有没有指向数组的共用属性——数组不直接指向,对象直接指向;数组是有特殊原型链的对象。

数组和对象.png
数组赋值.png

对象和数组有本质上的区别,遍历方法不同,起到的作用也不同 只遍历key中的数字(从0开始)下标,默认是数组;遍历所有key,默认不是数组

特殊数组.png
注:上图第一种写法将其视为数组,第二种写法将其视为对象

伪数组:__proto__没有最终指向Array.prototype(会导致没有push、pop等数组特有的方法)。目前接触到的伪数组——arguments