Array构造函数

Array

Array对象是用于构造数组的全局对象.

概述

数组对象是一个有序的数据(原始类型或对象类型)集合, 是一种类列表对象,它的原型提供了数组操作的方法.
数组只能用整数作为数组元素的索引,而不是字符串,且从0开始,第一个元素的索引为0.使用非整数并通过[].来访问数组或设置数组元素时,所操作的并不是数组列表的元素,而是数组对象属性集合上的变量.数组对象的属性和数组元素列表是分开存储的,并且数组的遍历和修改操作也不能作用于这些命名属性.

1
2
3
4
5
6
var arr = [];
arr['zero'] = 'zero';
arr[0] = 0;
arr.forEach(item => console.log(item))

// 0

构造函数属性

Array.length

构造函数的length属性,该属性为静态属性(详见Function.length),不是数组实例的length属性,其值为1.

1
2
3
console.log(Array.length);

// 1

Array.prototype

构造函数的原型对象,所有的数组实例都会从Array.prototype继承属性和方法.通过扩展Array原型上的属性和方法进而为所有的数组实例增加属性和方法.

1
2
3
4
5
6
7
8
9
10
11
12
Array.prototype.type = "Array";
Array.prototype.first = function() {
return this[0];
};
var arr = [3, 2, 1];
arr.type;

// Array;

arr.first();

// 3;

构造函数方法

Array.from()

描述 :
从一个类似数组或可迭代对象中创建一个新的数组实例.
语法 :

Array.from(arrayLike[, mapFn[, thisArg]])

ArrrayLike : 伪数组对象(拥有length属性和若干索引属性) 和 可迭代对象.
mapFn : 返回的新数组都会执行的回调函数.
thisArg : 执行回调函数时this对应的对象.
返回值 : 新的数组实例.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Array.from('Array');

// ["A", "r", "r", "a", "y"];

(function () {
return Array.from(arguments);
})(3, 2, 1)

// [3, 2, 1];

let s = new Set(['array', Array]);
Array.from(s);

// ["array", function];

Array.from([3, 2, 1], x => x.toString());

// ["3", "2", "1"];

Array.isArray()

描述 :
判断待验证的参数是否为Array.
语法 :

Array.isArray(obj)

obj : 待验证参数.
返回值 : 若待验证参数为数组时,则为true; 否则false.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Array.isArray([]);

// true;

Array.isArray({});

// false;

Array.isArray(Array.prototype);

// true;

// Polyfill
if (!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
};

Array.of()

描述 :
创建一个由传入参数组成的新数组实例, 而不考虑参数的数量或类型.
语法 :

Array.of(element0[, element1[, ...[, elementN]]])

elementN : 任意个参数,将顺序得成为数组的元素.
返回值 : 新的数组实例.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Array.of(3);

// [3];

Array.of(3, 2, 1);

// [3, 2, 1];

Array.of('Array', Array);

// ["Array", function];

// Polyfill
if (!Array.of) {
Array.of = function() {
return Array.prototype.slice.call(arguments);
};
}

------------- The End -------------
显示评论