`
desert3
  • 浏览: 2164857 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

JavaScript语言精粹读书笔记- 数组

 
阅读更多
数组Arrays
数组是一段线性分配的内存,它通过整数去计算偏移并访问其中元素。数组可以是很快的数据结果。不幸的是,JavaScript没有像这种数组一样的数据结果。
反而,JavaScript提供了一种拥有一些类数组(array-like)特性的对象。它把数组的下标转变成字符串,用其作为属性。它明显比一个真正的数组慢,但它可以更方便地使用。属性的检索和更新的方式与对象一模一样,除了有一个可以用整数作为属性名的特性外。数组有它们自己的字面量格式。

数组字面量Array Literals
var empty = [];
var numbers = [0,1,2];    // 数组字面量
var numbers_object = {‘0’ : 0,’1’ : 1, ‘2’ : 2};  // 对象字面量
上面的数组字面量numbers和对象字面量numbers_object产生了一个相似的结果。numbers和numbers_object都是包含3个属性的对象,并且那些属性刚好有相同的名字和值。但是它们也有一些显著的不同。numbers继承自Array.prototype,而numbers_object继承自Object.prototype,所以numbers继承了大量有用的方法。同时,numbers有一个诡异的属性length,而numbers_object没有。
在大多数语言中,一个数组的所有元素都要求是相同的类型。JavaScript允许数组包含任意混合类型的值。

长度Length
每个数组都有一个length属性。和大多数其他语言不同,JavaScript数组的length是没有上界的。如果你用大于或者等于当前length的数字作为下标来保存一个元素,那么length将增大来容纳新元素。不会发生边界错误。
length属性的值是这个数组的最大整数属性名加上1。它不一定等于数组里的属性的个数。
var myArray = [];
myArray.length  // 0
myArray[100] = true;
myArray.length //101 但是myArray只包含一个属性。

删除Delete
由于JavaScript数组其实就是对象,所以delete运算符可以用来从数组中移除元素。
delete numbers[1];   // [0,undefined,2]
不幸的是,那样会在数组中遗留一个空洞。这是因为排在被删除元素之后的元素保留了它们最初的名字(下标)。而你通常想要的是递减后面每个元素的名字(下标)。可以通过splice(序号,删除元素个数)来实现想要的删除效果。

枚举Enumeration
因为JavaScript的数组其实就是对象,所以可以用for in 语句来遍历一个数组的所有属性。不幸的是,for in 无法保证属性的顺序,而大多数的数组应用都期望按照阿拉伯数字顺序来产生元素。此外,可能从原型链中得到意外属性的问题依旧存在

混淆的地方
在JavaScript编程中,一个常见的错误是在须使用数组时使用了对象,或者在须使用对象时使用了数组。其实规则很简单:当属性名小而连续的整数时,你应该使用数组。否则,使用对象
JavaScript本身对于数组和对象的区别是混乱的。typeof运算符报告数组的类型是’object’,这没有意义。

方法Method
JavaScript提供了一套作用与数组的方法。这些方法是被存储在Array.prototype中的函数。同时所有给Object.prototype扩充的方法,由于原型链的存在,Array对象也能使用。
通过给Array.prototype扩充一个函数,每个数组都继承了这个方法。
同时因为数组其实就是对象,我们也可以直接给一个单独的数组添加方法
data = []; data.say = function(){alert(1);}; data.say();
因为字符串say不是整数,所以给数组增加一个say属性不会改变它的长度。当属性名是整数时,数组才最有用,但它们依旧是对象,并且对象可以接受任何字符串作为属性名。

纬度
分享到:
评论

相关推荐

    JavaScript应用实例-数组映射排序.js

    JavaScript应用实例-数组映射排序.js

    JavaScript语言精粹完整版

    《JavaScript语言精粹》作为一本深入浅出讲解JavaScript编程语言的经典之作,对于想要提升自己JavaScript技能的开发者来说,无疑是一份宝贵的资源。本书由Douglas Crockford所著,他不仅是JSON格式的创始人,也是...

    ChengKeJ#ChengKeJ.github.io#2016-05-05-javascript入门笔记4-数组1

    1.数组 1.创建的新数组是空数组,没有值,如输出,则显示undefined 2.虽然创建数组时,指定了长度,但实际上数组都是变长的,也就是说即使指定了长度为8

    JavaScript-数组方法-删除、插入、替换.源码

    JavaScript_数组方法-删除、插入、替换.源码

    17 - 数组排序.rar

    在JavaScript编程语言中,数组排序是一项基础且重要的操作。数组排序允许我们按照特定的规则重新组织数据,这对于数据分析、数据展示或算法实现等场景都至关重要。在这个“17 - 数组排序.rar”压缩包文件中,很可能...

    JavaScript语言精粹--蝴蝶

    JavaScript语言精粹——蝴蝶 JavaScript,作为Web开发中的核心语言,是实现动态交互的重要工具。这篇文档《JavaScript语言精粹——蝴蝶》旨在深入探讨并解析JavaScript的精华部分,帮助开发者更好地理解和掌握这门...

    JavaScript语言精粹 pdf

    《JavaScript语言精粹》作为一本经典的编程书籍,深入浅出地介绍了JavaScript这门语言的核心概念和技术要点,是每一个前端开发者乃至后端工程师都不容错过的读物。这本书由Douglas Crockford所著,他不仅是...

    03--数组.pptx

    【数组】是编程语言中非常基础且重要的数据结构,它允许我们存储一组具有相同类型的数据。在本课中,我们将深入理解数组的概念、创建方法以及基本操作。 首先,数组是**存储一系列值的变量集合**,它允许我们将多个...

    JAVA实验报告-数组.docx

    Java作为一种广泛使用的编程语言,其数组操作是掌握Java语言的基础,也是理解其他高级数据结构的基石。本报告详细记录了在Java语言环境中进行数组相关操作的实验过程,并对相关知识点进行了深入分析。 首先,实验一...

    JavaScript-数组-循环-bloco-4.2

    在这个"JavaScript-数组-循环-bloco-4.2"的主题中,我们将深入探讨JavaScript中的几种常见循环结构以及它们在处理数组时的应用。 1. **for循环**: for循环是最基础的循环结构,适用于数组遍历。其基本语法如下: ...

    PHP、web前端开发-数组的定义.pptx

    在Web前端开发中,虽然JavaScript(而不是PHP)是主要的脚本语言,但JavaScript同样支持数组,并且其定义和操作方式与PHP有相似之处。JavaScript的数组可以用`[]`定义,并且可以混合使用数字和字符串作为键,这在...

    Web前端开发技术-数组基本操作.pptx

    在JavaScript中,有两种常见的创建数组的方式: 1. 使用`new Array()`构造函数: ```javascript var arr1 = new Array(); ``` 这种创建方式允许你传入参数来初始化数组,例如`new Array(3)`会创建一个包含三个空...

    JavaScript语言精粹(修订版)

    "JavaScript语言精粹(修订版)"是一本深入探讨JavaScript编程精髓的书籍,旨在帮助开发者掌握其核心概念、最佳实践以及常见陷阱。这本书对初学者和经验丰富的开发者都具有很高的价值,能够提升对JavaScript的理解和...

    JavaScript语言精粹

    《JavaScript语言精粹》:大多数编程语言都包含精华与鸡肋。JavaScript在被改进之前就已匆忙地开发和发布了,因此鸡肋部分的比重超出了预料。这本权威的著作筛去了Javascript大多数不好的特性,介绍了这门语言就整体...

    JavaScript语言精粹_修订版.pdf

    JavaScript语言精粹_修订版.pdf

    JavaScript应用实例-随机打乱数组顺序.js

    JavaScript应用实例-随机打乱数组顺序.js

Global site tag (gtag.js) - Google Analytics