快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰8455下载app:JavaScript面向对象程序设计(2) 数组



或许你会稀罕,面向工具的法度榜样设计为什么从数组开始讲起?这是由于……其间的各种 关系吧……嘿嘿,这里先卖个关子,先来看看我们认识的数组在JavaScript里面是什么样 子的。

1.创建数组

在JavaScript中有很多创建数组的措施。比如应用Array函数。不过 这不是现在我们要讲述的。现在我们应用简单的方括号“[]”的法子来创建数组。

var objAyyar = []; // 1

var objAyyar = [2]; // 2

var objAyyar = ["a", "b", "c"]; // 3

var objAyyar = [new Date(), 123, "abc"]; // 4

这里有四个创建数组的语句。下面来逐一解释一下:

第 一句,创建一个空的数组;

第二句,创建一个数组,数组元素只有一个2;

第三句,创建 一个数组,数组的元素分手初始化为"a", "b", "c";

第四句 ,创建一个数组,此中第一个元素为一个Date类型的工具,第二个元素是数字123,第三个元素是字符串 "abc"。

回首一下,在Java或者C++说话中,数组是具有相同的数据类型的元素的聚拢 。比如应用Java说话的下面语句

int[] array = new int[10];

将创建一个能放入10个int 类型的元素的数组。数组和其他类型的聚拢的一个很大年夜的差别是,数组里面只能寄放相同数据类型的元 素(应用泛型的聚拢除外)。然则,像上面的第四句,JavaScript的数组怎么能寄放不合类型的元素呢? 这是由于,JavaScript是弱类型的说话,没有很大年夜的数据类型的区别,以是数组的元素可以放入不合的 类型。

2.操作数组

数组是元素的有序聚拢。数组中的澳门新葡亰8455下载app元素是有序的,这就可以经由过程下标 造访到数组中的每个元素。而且,JavaScript的数组相称的机动。当你习气了Java或者C++的数组之后, 或许并不习气JavaScript的数组。在必然程度上,这种数组可以称为一种动态数组。看这样一段代码:

var arr = [1, 2, 3, 4, 5];

alert(arr.length); // 数组长度为5

alert (arr[3]); // arr[3] = 4

arr[9] = 10;    // 改变了数组的长度为10

alert(arr [7]);

alert(arr.length);

起开创建一个数组arr,可以看到它的长度是5,arr[3] 是4。这些都是很常见的。那么第三句,arr[9] = 10;就有点意思了——在Java中,这句操作 将导致数组越界的非常,在C++中,这种操作是极其危险的。然则在JavaScript中,这样的操作是正常澳门新葡亰8455下载app的 ——你可以动态的改变数组的大年夜小!虽然你在创建数组时并没有这么大年夜的长度,然则,你可 以在创建之后指定它!这时的arr.length已经自动的变成 10了。那么,arr[7]又会是什么呢?颠末运行 代码我们会看到,arr[7]是undefined。也便是说,虽然arr[9]有了值,然则此中从 arr[5]到arr[8]这 几个元素都是不决义的,也便是undefined。假如你问JavaScript怎么不给澳门新葡亰8455下载app个初始值?唉,饶了它吧! JavaScript并不知道你想要它初始化成什么值啊!万一错了呢?干脆照样别了吧 ……

var arr = [1, 2, 3, 4, 5];

alert(arr.length); // 数组长度 为5

delete arr[3]; // 删掉落第4个元素

alert(arr.length); // 长度不变

alert (arr[3]); // arr[3] = undefined

arr.length = 4; // 缩利害度

alert(arr[4]);

arr.length = 10; // 增添长度

alert(arr[6]);

上面的代码也很故意思:应用 delete操作符可以删除随意率性一个数组元素,然则长度并不改变。

Java的数组也有一个length属性 ,用来显示数组的长度。JavaScript的数组也有这个属性。然则,澳门新葡亰8455下载app和Java不合的是,后者的 length属性 并不是只读的!你可以随意率性的设置数组的澳门新葡亰8455下载applength属性的值,无论是扩大年夜照样缩小!只是如上面的代码所 示,改变了length之后,越界的元素或者曩昔没有定义的元素都将成为undefined。也便是说,当length 大年夜于原始长度时,从原长度到length - 1的元素都将成为undefined;当length小于原始长度时,从 length到原长度 - 1的元素也都邑清除设置为undefined。

3.非数字的下标?

假如动态 的length属性还不敷机动的话,那么,JavaScript的数组还有别的的能力。

你见到过用字符串做 数组下标的吗?Java行吗?C++行吗?JavaScript就行!看看下面的语句:

var arr = [1, 2, 3];

alert(arr[1] == arr["1"]);

arr["js"] = 4;

alert (arr["js"]);

上面的语句看到,arr[1]和arr["1"]实际是一样的 效果!这是怎么回事呢?我们用下面的语句验证一下:

alert(1 == "1"); // true

alert(1 === "1"); // false

因为JavaScript是弱类型说话,所 以在应用变量的时刻,JavaScript会尽可能的将它转换成所必要的类型。比如数组下面必要数字,那么 供给一个字符串,将会试图把字符串转换成数字。这里的"1"就成功的转换成了数字1,于是 这个语句就成立了。这便是应用 == 操作符返回true的缘故原由。而 === 操作符不容许这样的类型转换,所 以会返回false。

那么,这个arr["js"]怎么也能成立呢?这就不是上面的问题了。也 便是说,JavaScript实际是容许将字符串作为数字下标的。这在JavaScript中是完全合法的。

出 处: http://devbean.blog.51cto.com/448512/163574

您可能还会对下面的文章感兴趣: