1. Array对象
1.1. Array对象用于在单个的变量中存储多个值。
1.2. 创建Array对象的语法:
new Array();
new Array(size);
new Array(element0, element1, ..., elementn);
1.3. 参数
1.3.1. 参数size是期望的数组元素个数。返回的数组, length字段将被设为size的值。
1.3.2. element ..., elementn是参数列表。当使用这些参数来调用构造函数Array()时, 新创建的数组的元素就会被初始化为这些值。它的length字段也会被设置为参数的个数。
1.4. 返回值
1.4.1. 如果调用构造函数Array()时没有使用参数, 那么返回的数组为空, length字段为0。
1.4.2. 当调用构造函数Array(size)只传递给它一个数字参数时, 该构造函数将返回具有指定个数、元素为undefined的数组。
1.4.3. 当其他参数调用Array(element0)或Array(element0, element1, ..., elementn)时, 该构造函数将用参数指定的值初始化数组。
2. Array对象属性
3. Array对象方法
4. 使用数组文本创建数组和Array对象创建数组
4.1. 使用数组文本创建数组和Array对象创建数组, 效果完全一样。
4.2. 出于简洁、可读性和执行速度的考虑, 我们使用数组文本创建数组。就是因为new Array()多执行了一个Array()构造函数, 所以它创建数组比以数组文本的方式创建数组复杂的多。
4.3. 使用数组文本创建数组和Array对象创建数组都是对象类型。
4.4. 使用数组文本创建数组和Array对象创建数组内存结构:
5. 例子
5.1. 代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>Array对象</title>
</head>
<body>
<script type="text/javascript">
var arr1 = new Array();
var arr2 = new Array(10);
var arr3 = new Array("只有一个参数");
var arr4 = new Array('abc', 12, true);
var arr5 = [];
var arr6 = ['abc', 12, true];
document.write('arr1 = ' + arr1 + ' <b style="color: red">|</b> arr1.length = ' + arr1.length + '<br />');
document.write('arr2 = ' + arr2 + ' <b style="color: red">|</b> arr2.length = ' + arr2.length + '<br />');
document.write('arr3 = ' + arr3 + ' <b style="color: red">|</b> arr3.length = ' + arr3.length + '<br />');
document.write('arr4 = ' + arr4 + ' <b style="color: red">|</b> arr4.length = ' + arr4.length + '<br />');
document.write('arr5 = ' + arr5 + ' <b style="color: red">|</b> arr5.length = ' + arr5.length + '<br />');
document.write('arr6 = ' + arr6 + ' <b style="color: red">|</b> arr6.length = ' + arr6.length + '<br />');
</script>
</body>
</html>
5.2. 效果图
6. Array对象重写了Object对象的constructor: ƒ Array()属性, 和toLocaleString()、toString()这两个方法。
7. toLocaleString()方法
7.1. 首先调用每个数组元素的toLocaleString()方法, 然后使用地区特定的分隔符把生成的字符串连接起来, 形成一个本地字符串。
7.2. 语法
arrayObject.toLocaleString()
8. 例子
8.1. 代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>Array对象toLocaleString()方法</title>
</head>
<body>
<script type="text/javascript">
var arr1 = new Array(3.1415926, new Date());
document.write('arr1 = ' + arr1 + '<br />');
document.write('arr1.toString() = ' + arr1.toString() + '<br />');
document.write('arr1.toLocaleString() = ' + arr1.toLocaleString() + '<br />');
</script>
</body>
</html>
8.2. 效果图
9. 如何识别数组
9.1. ECMAScript 5定义了新方法Array.isArray(arr)判断一个对象是否是数组:
var arr1 = new Array('abc', 12, true);
Array.isArray(arr1); // 输出true
9.2. 在对象的constructor属性上查找Array字符串判断一个对象是否是数组:
var arr2 = ['abc', 12, true];
arr2.constructor.toString().indexOf('Array') > -1; // 输出true
9.3. 使用instanceof运算符判断一个对象是否是数组:
var arr1 = new Array('abc', 12, true);
arr1 instanceof Array // 输出true
9.4. 例子
9.4.1. 代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>如何识别数组</title>
</head>
<body>
<script type="text/javascript">
var arr1 = new Array('abc', 12, true);
var arr2 = ['abc', 12, true];
document.write('arr1.constructor = ' + arr1.constructor + ', (typeof arr1.constructor) = ' + (typeof arr1.constructor) + '<br />');
document.write('arr2.constructor = ' + arr2.constructor + ', (typeof arr2.constructor) = ' + (typeof arr2.constructor) + '<br />');
document.write('arr1.constructor.toString() = ' + arr1.constructor.toString() + ', (typeof arr1.constructor.toString()) = ' + (typeof arr1.constructor.toString()) + '<br />');
document.write('arr2.constructor.toString() = ' + arr2.constructor.toString() + ', (typeof arr2.constructor.toString()) = ' + (typeof arr2.constructor.toString()) + '<br />');
document.write('arr1是数组吗: ' + Array.isArray(arr1) + ', arr2是数组吗: ' + Array.isArray(arr2) + '<br />');
document.write('arr1是数组吗: ' + (arr1.constructor.toString().indexOf('Array') > -1) + ', arr2是数组吗: ' + (arr2.constructor.toString().indexOf('Array') > -1) + '<br />');
document.write('arr1是数组吗: ' + (arr1 instanceof Array) + ', arr2是数组吗: ' + (arr2 instanceof Array) + '<br />');
</script>
</body>
</html>
9.4.2. 效果图