资讯专栏INFORMATION COLUMN

类数组

derek_334892 / 2418人阅读

摘要:它可以像数组一样,但无法使用数组的函数,如报错典型的类似数组的对象是函数的对象,以及大多数元素集,还有字符串。仅以字符串为例类数组的遍历可以使用循环,也可以使用数组的

类数组就是有length属性的对象。它可以像数组一样,但无法使用数组的函数,如push.

var arr = {
    0: "a",
    1: "b",
    2: "c",
    length: 3
};
console.log(arr[0]);// a
console.log(arr.length);// 3
console.log(arr instanceof Array);// false
arr.push("d");// 报错

典型的类似数组的对象是函数的arguments对象,以及大多数DOM元素集,还有字符串。

function args() { return arguments }
// 函数的参数
var arrayLike = args("a", "b");

console.log(arrayLike[0]); // "a"
console.log(arrayLike.length); // 2
console.log(arrayLike instanceof Array); // false
arrayLike.push("c");// 报错

// DOM元素集
var elts = document.getElementsByTagName("h3");
elts.length // 3
elts instanceof Array // false

// 字符串
"abc"[1] // "b"
"abc".length // 3
"abc" instanceof Array // false

数组的slice方法将类似数组的对象,变成真正的数组。仅以字符串为例

var str = "abc";
var arr = Array.prototype.slice.call(str);
console.log(arr[0]); // "a"
console.log(arr.length); // 3
console.log(arr instanceof Array); // true
console.log(arr.push("d"));// 4

类数组的遍历可以使用for循环,也可以使用数组的foreach

for (var i = 0; i < arr.length; i++) {
    console.log(i + ". " + arr[i]);
}

Array.prototype.forEach.call(arr, function(elem, i) {
    console.log(i + ". " + elem);
});

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84858.html

相关文章

  • 理解javascript数组

    摘要:也就是说,为一些常规对象增加一些属性可以使其变成类数组对象。实际上,类数组的定义只有一条,具有属性。在中,所有的数组方法都是通用的。 什么是类数组 javascript中一些看起来像却不是数组的对象,叫做类数组。也就是说,为一些常规对象增加一些属性可以使其变成类数组对象。 类数组的特征: 有索引(数字)属性和length属性的对象 不具有数组的方法。间接调用数组的一些方法,比如pus...

    yzzz 评论0 收藏0
  • javascript 数组

    摘要:中常见的类数组有对象和方法的返回结果。类数组判断权威指南上给出了代码用来判断一个对象是否属于类数组。此处应当为类数组表现之所以成为类数组,就是因为和数组类似。伪数组转化成数组非伪类对象,直接返回最好针对以前的实现参考的怪癖类数组对象 在线的《javascript权威指南》有对该概念的解释。 那么,什么是javascript 类数组呢? 定义: 拥有length属性,length-0可...

    int64 评论0 收藏0
  • 深入理解JavaScript数组

    摘要:但是,我们可以借用类数组方法不难看出,此时的在调用数组原型方法时,返回值已经转化成数组了。很多时候,深入看看源代码也会让你对这个理解的更透彻。的前端乐园原文链接深入理解类数组 起因 写这篇博客的起因,是我在知乎上回答一个问题时,说自己在学前端时把《JavaScript高级程序设计》看了好几遍。于是在评论区中,出现了如下的对话:showImg(https://segmentfault.c...

    Towers 评论0 收藏0
  • 第17部分_反射机制

    摘要:如果此对象表示非静态上下文中声明的内部类,则形参类型作为第一个参数包括显示封闭的实例。参数字段名返回此类中指定字段的对象抛出如果找不到带有指定名称的字段。 一、类的加载 1. 概述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化 2. 加载 就是指将class文件读入内存,并为之创建一个Class对象 任何类被使用时系统都...

    trilever 评论0 收藏0
  • ArrayList (一)

    摘要:类属性是基于数组实现的,其属性有其中常量表示数组的基础容量。表示数组表当前长度数组元素个数,作索引时,表示数组的最后一个元素,而表示新添加的项可以被放置的位置。 PS:如果觉得文章有什么地方写错了,哪里写得不好,或者有什么建议,欢迎指点。 ArrayList 类提供了 List ADT 的可增长数组的实现。 一、自定义实现的 ArrayList 类 MyArrayList 源码链接:戳...

    xingqiba 评论0 收藏0
  • Java反射

    摘要:中的反射反射能够分析类所拥有的能力的程序称为反射。获取类的名称获取类的修饰符获取类所在的包获取父类的属性获取类的构造器等等获得的构造器的使用获取构造器有两种方法。 Java中的反射 反射:能够分析类所拥有的能力的程序称为反射。 反射的作用 当我们在使用一个已有的类的时候,在主代码的main()方法中使用别的已有的类的时候,如果被使用的类发生了改变,那么导致我们的main()方法中...

    张红新 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<