欢迎关注
莎士比亚曾说:
你这是披着羊皮的狼,我要把你赶走。
数组是一段线性分配的内存,它通过整数计算偏移并访问其中的元素。数组是一种性能出色的数据结构。不幸的是,JavaScript没有像此类数组一样的数据结构。作为替代,JavaScript提供了一种拥有一些数组(array-like)特性的对象。它把数组的下标转变成字符串,用其作为属性。它明显地比一个真正的数组慢。但使用起来更方便。它的属性的检索和更新的方式与对象一模一样,只不过多一个可以用整数作为属性名的特征。
数组字面量
数组字面量提供了一种非常方便地创建新数组的表示法。一个数组字面量是在一对方括号中包围零个或多个用逗号分隔的值的表达式。数组字面量允许出现在任何表达式可以出现的地方。数组的第一个值将获得属性名'0',第二个值将获得属性名'1'。依次类推:
欢迎关注
再来看一下对象字面量:
欢迎关注
两者产生了一者的结果!numbers和numbers_object都是包含10个属性的对象,并且那些属性刚好有相同的名字和值。但是它们也有一些显著的不同。numbers继承自Array.prototype,而numbers_object继承自object.prototype,所以numbers继承了大量有用的方法。同时,numbers也有一个诡异的length属性。而numbers_object则没有!
在大多数语言中,一个数组的所有元素都要求是相同的类型,JavaScript允许数组包含任意混合类型的值。
够混搭不?
没有办法证明自己是数组
JavaScript本身对于数组和对象的区别是混乱的,typeof 运算符报告数组的类型是'object',这没有任何意义。JavaScript没有一个好的机制来区别数组和对象。(ECMA-262已解决)。在原来可以通过定义自己的is_array函数来弥补这个缺陷:
最后同样也以莎士比亚的一句来结尾:
它虽疯,但却有他的一套理论。
关注“教授学苑”,期待带给你快乐的开发知识!
本文暂时没有评论,来添加一个吧(●'◡'●)