sixteen
一:类数组
在 JavaScript 中,类数组(Array-like)对象是指那些看起来像数组但不是真正数组的对象。它们共有的特点是拥有数字下标(索引)和
length属性,但通常不具备数组的所有方法。
类数组的特点:
- 下标属性: 类数组对象具有 有序数字下标(索引),例如
obj[0]、obj[1]等;length属性: 类数组对象有length属性,表示对象中元素的数量;- 不是数组实例: 它们不是
Array实例,因此不具备数组的内置方法,如push、pop、slice等。
1.1 认识类数组
类数组,默认是没有数组方法的。也就是没有继承
Array.prototype上的属性。
代码范例一:验证上述内容。
//类数组 --- 认识类数组
function test(){
console.log(arguments);
}
test(1, 2, 3, 4, 5, 6);
//[Arguments] { '0': 1, '1': 2, '2': 3, '3': 4, '4': 5, '5': 6 }
function test(){
arguments.push(7); // 直接报错
console.log(arguments);
}
test(1, 2, 3, 4, 5, 6);
//Uncaught TypeError: arguments.push is not a function
打印图解:
1.2 类数组与数组的明显区别
通过代码范例二的打印图解,就可以很明显的看出区别,类数组的
[prototype]是Object,而数组的[prototype]是Array。
代码范例二:验证上述内容。
//类数组
function test(){
console.log(arguments);
}
test(1, 2, 3, 4, 5, 6);
//数组
var arr = [1, 2, 3, 4, 5, 6]
console.log(arr);
打印图解:
1.3 对象转类数组 --- 基础
两个条件:
一:主动添加有序数字下标;
二:主动添加length属性;
代码范例三:验证上述内容。
// 对象转类数组
var arrLink = {
//要有数组结构,下标对应数组元素
0: 1,
1: 2,
2: 3,
3: 4,
4: 5,
length: 5
}
console.log(arrLink); //打印对象里面的内容
//{ '0': 1, '1': 2, '2': 3, '3': 4, '4': 5, length: 5 }
console.log(arrLink[3]); //打印对应下标的内容,也可以理解成键值对
//4
console.log(arrLink.length); //打印长度
//5
1.4 对象转类数组 --- 增加数组方法
在对象内容添加数组方法,也可以说是从数组的原型上继承数组方法,例如:
push: Array.prototype.push通过代码范例四的打印结果,在使用数组方法
push后,其作用范围只针对连续的数字下标,也就是对象的数字键名,同时也会动态的更新length属性。
代码范例四:验证上述内容
// 对象转类数组 --- 增加数组方法
var arrLink = {
//要有数组结构,下标对应数组元素
0: 1,
1: 2,
2: 3,
3: 4,
4: 5,
length: 5,
push: Array.prototype.push,
name: 'wendy',
age: '24'
}
arrLink.push(6);
console.log(arrLink);
//{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, length: 6, name: 'wendy', age: '24', push: ƒ}