JavaScript 学习笔记十六

128 阅读2分钟

sixteen

一:类数组

​ 在 JavaScript 中,类数组(Array-like)对象是指那些看起来像数组但不是真正数组的对象。它们共有的特点是拥有数字下标(索引)和 length 属性,

但通常不具备数组的所有方法。

类数组的特点:

  1. 下标属性: 类数组对象具有 有序数字下标(索引),例如 obj[0]obj[1] 等;
  2. length 属性: 类数组对象有 length 属性,表示对象中元素的数量;
  3. 不是数组实例: 它们不是 Array 实例,因此不具备数组的内置方法,如 pushpopslice 等。
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

打印图解:

image-20240202035753148.png image-20240202040036414.png

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);

打印图解:
image-20240203012634970.png

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: ƒ}