一、数组介绍
1、数组是有序列表,每一项可以保存任何类型的数据
关于对象属性:在 JavaScript 中,以数字开头的属性不能用点号引用,必须用方括号。如果一个对象有一个名为 3d
的属性,那么只能用方括号来引用它。
obj['3d']
引出数组属性:
arr[0] || arr['0']
2、创建数组的方式:
(1)构造函数
var arr = new Array(1,2,3);
console.log(arr);
如果只是一个数字,表示数组的长度,比如:
var arr = new Array(3);
console.log(arr);
//结果:[empty × 3]
(2)数组字面量
与对象一样,数组字面量创建数组时,也不会调用Array构造函数。
var arr = [1,2,3];
console.log(arr);
3、数组的length属性可以读写,通过设置length的值,可以从数组的末尾移除或添加新的项。
4、数组调用toString方法:实际上数组的每项循环遍历调用toString方法,且是根据数组的每项的值的类型,调用对应类型的toString方法,此处特别注意对象的toString方法。特别注意:undefined和null没有toString方法,所以数组的toString方法在处理该项的时候,返回空字符。
例如:
var arr = [1,2,"str",[false,[4],3],{name:"zhu"}];
console.log(arr.toString());
//结果
1,2,str,false,4,3,[object Object]
还有一些方法,会隐式的调用toString方法,比如alert方法,就会调用toString方法,那么当alert(数组)的时候,该数组也是执行toString()方法。
数组对toString方法进行了重写,但是由于undefined和null没有toString方法,所以数组调用toString方法时,如果有的项是undefined或null,该项得到的字符串为空。比如:
var arr = [undefined, null, 1, false, [2,3],{}, "abc"]
console.log(arr.toString());
",,1,false,2,3,[object Object],abc"
二、判断数组
1、调用对象的toString方法来判断
注意:此处的Object是构造函数
Object.prototype.toString.call(arr) === "[object Array]"
2、ES5的方法
Array.isArray()方法:该方法是Array构造函数上的方法
Array.isArray(arr)
3、arr.constructor其实是arr的原型上的构造函数属性constructor,指向Array的函数体
var arr = [1,2,"str",[false,[4],3],{name:"zhu"}];
console.log(arr.constructor);//Array的构造函数的函数体
console.log((arr.constructor+"").indexOf("Array") !== -1)