JavaScript引用类型之Array类型一

时间:2021-08-24 00:09:11

一、简介

除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了。下面就来分析ECMAScript中的数组与其他语言中的数组的异同性:

1、相同点:

(1)他们都是数据的有序列表

(2)语法和作用都类似

2、不同点:

(1)Array数组中的每一项可以保存任何类型的数据。也就是说,可以用数组的第一个位置来保存字符串,用第二位置来保存数值,第三个位置来保存对象的指针

(2)Array数组的大小是可以动态调整的(部分其他的语言也有此特性),即随着数组中数据的添加自动增长以容纳新增数据。

二、使用方式和相关方法介绍

1、创建数组实例的方式有两种:

1.1 第一种:使用new和Array构造函数,代码如下:

var colors=new Array();

1.1.1

我们可以在创建数组实例的同时给该实例限定长度,代码如下:

var colors=new Array(20);

这样就创建了一个长度为20的数组。

1.1.2

我们也可以在创建数组的同时给他初始化,代码如下:

var colors=new Array("red","blue","green");

1.2  第二种方式是使用Array构造函数不使用new操作符,代码如下:

var colors=Array("red","blue","green");

1.3第三种方式使用数字字面量表示法(和Object类型的字面量表示法一样)。代码如下:

var colors=["red","blue","green"];
var colors=[]; //创建了一个空数组

这里注意:通过对象字面创建的数组在创建时就不会调用Array构造函数了,这与Object引用类型创建实例使用对象字面量法一样它也不会调用Object构造函数!

2、Array数组操作

1、下面通过代码来讲解下Array数组的基本操作:

var colors=["red","blue","green"];   //定义一个字符串数组
alert(colors[0]); //显示第一项
colors[2]="black"; //修改第三项
colors[3]="brown"; //新增第四项

但是有一点需要注意,如下代码:

var colors=["red","blue","green"];
colors.length=2;
alert(colors[2]); //输出:undefined

分析上面代码,当使用对象字面量定义了colors数组时,其初始长度是3,当我们修改其长度为2时,这是第三项就会被砍掉,然后我们在输出第三项,就会输出"undefined";

上面代码是将长度缩小的情况,下面来分析如果将长度增加的情况,如下代码:

var colors=["red","green","blue"];
color.length=4;
alert(colors[3]); //输出:undefined

分析上面的代码:初始化定义的长度为3,当将其长度设为4时,那么新增的那项的值就会被设为"undefined",新增的每一项都是!

2、检测数组的方式

在一些特殊应用开发中,我们经常需要判断一个对象是不是一个数组,所以ECMAScript 5提供了两种方法来判断一个对象是不是数组

(1)对一个全局作用域而言,使用instanceof操作符就能得到满意的结果,代码如下:

if(value instanceof Array){
//对数组执行某些操作
}

(2)上面的判断方法是基于一个全局作用域下的,但是有些网页可能包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个不同版本的Array构造函数。如果你从一个框架向另一个框架传入一个数组,但是两个框架有各自的Array构造函数!

所以为了解决这个问题,ECMAScript 5中新增了Array.isArray()方法。这个方法的作用是判断一个值到底是不是数组,而不管它实在哪个全局环境中创建的。代码如下:

if(Array.isArray(value)){
//对数组执行某些操作
}

注意:第二个方法有浏览器限制!