`
desert3
  • 浏览: 2159599 次
  • 性别: 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应用实例-数组填充.js

    JavaScript应用实例-数组填充.js

    JavaScript 动态网页实例 - 数组.rar

    由于JavaScript 是一种无类型语言,所以,数组元素可以是任意的数据类型,同一数组的不同元素也可以具有不同的类型。数组的元素甚至可以是其他数组,这样就为创建多维数组提供了可能。本章首先介绍数组的定义与赋值...

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

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

    JavaScript语言精粹.修订版---高清版.pdf

    但根据标题与描述,我们可以推断出书籍《JavaScript语言精粹.修订版---高清版.pdf》是关于JavaScript语言的深入介绍与讲解,且是为个人学习所用。以下是我为您整理的关于JavaScript语言的相关知识点: JavaScript是...

    17 - 数组排序.rar

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

    JavaScript语言精粹--蝴蝶

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

    03--数组.pptx

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

    JavaScript语言精粹 pdf

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

    JavaScript语言精粹 中文版

    JavaScript语言精粹 中文版 共两部分

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

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

    JavaScript语言精粹

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

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

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

Global site tag (gtag.js) - Google Analytics