摘要:定义类数组对象的定义可以通过索引访问元素,并且拥有属性没有数组的其他方法,例如,,等。所以当后面的作用对象是一个类数组时,就会把这个类数组对象转换为了一个新的数组。
定义
JavaScript 类数组对象的定义:
可以通过索引访问元素,并且拥有 length 属性;
没有数组的其他方法,例如 push , forEach , indexOf 等。
举例说明
var foo = { 0: "Java", 1: "Python", 2: "Scala", length: 3 }转换
如果类数组对象需要转化为数组,可以用 Array.prototype.slice.call
var foo = { 0: "Java", 1: "Python", 2: "Scala", length: 3 } var arr = Array.prototype.slice.call(foo);
其实一开始看到这个表达式感觉比较费解,后来查了一些资料,终于明白了,特别做一些说明:
第一, foo 本来是没有 slice 方法的, Array.prototype.slice.call(foo) 这个表达式相当于赋予 foo 这个对象 slice 方法。
第二, Array.prototype.slice.call(foo); 相当于 Array.prototype.slice.call(foo, 0); 是把取一个数组(或者类数组)的子集,并作为一个数组返回。所以当后面的作用对象是一个类数组时,就会把这个类数组对象转换为了一个新的数组。
所以,上面的一段代码等价于
var foo = { 0: "Java", 1: "Python", 2: "Scala", length: 3 } foo.slice = Array.prototype.slice; foo.slice();特性
类数组只有索引值和长度,没有数组的各种方法,所以如果要类数组调用数组的方法,就需要使用 Array.prototype.method.call 来实现。
例如,如果遍历一个类数组,可以这样实现:
Array.prototype.forEach.call(foo, function(item){ console.log(item); });
添加一个元素
Array.prototype.push.call(foo, "PHP"); // foo = {0: "Java", 1: "Python", 2: "Scala 111", 3: "PHP", length: 4}
原文:https://blog.taotao.io/javascript-array-like-object/
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/79716.html
摘要:但是,我们可以借用类数组方法不难看出,此时的在调用数组原型方法时,返回值已经转化成数组了。很多时候,深入看看源代码也会让你对这个理解的更透彻。的前端乐园原文链接深入理解类数组 起因 写这篇博客的起因,是我在知乎上回答一个问题时,说自己在学前端时把《JavaScript高级程序设计》看了好几遍。于是在评论区中,出现了如下的对话:showImg(https://segmentfault.c...
摘要:在客户端中,一些方法等也返回类数组对象。对象接下来重点讲讲对象。在函数体中,指代该函数的对象。下一篇文章深入之创建对象的多种方式以及优缺点深入系列深入系列目录地址。 JavaScript深入系列第十三篇,讲解类数组对象与对象的相似与差异以及arguments的注意要点 类数组对象 所谓的类数组对象: 拥有一个 length 属性和若干索引属性的对象 举个例子: var array = ...
摘要:也就是说,为一些常规对象增加一些属性可以使其变成类数组对象。实际上,类数组的定义只有一条,具有属性。在中,所有的数组方法都是通用的。 什么是类数组 javascript中一些看起来像却不是数组的对象,叫做类数组。也就是说,为一些常规对象增加一些属性可以使其变成类数组对象。 类数组的特征: 有索引(数字)属性和length属性的对象 不具有数组的方法。间接调用数组的一些方法,比如pus...
摘要:中常见的类数组有对象和方法的返回结果。类数组判断权威指南上给出了代码用来判断一个对象是否属于类数组。此处应当为类数组表现之所以成为类数组,就是因为和数组类似。伪数组转化成数组非伪类对象,直接返回最好针对以前的实现参考的怪癖类数组对象 在线的《javascript权威指南》有对该概念的解释。 那么,什么是javascript 类数组呢? 定义: 拥有length属性,length-0可...
摘要:属性是一个值或一组值以数组或对象的形式,是对象的成员。可以使用内置构造函数和创建包装对象。因此下面的代码将会使人很迷惑结果结果,此数组长度为应该尽量避免使用数组构造函数创建新数组。给数组对象添加返回数组中最大元素值的方法。 对象部分 Object类型 Object 是一个无序的集合,可以存放任意类型对象,所有其他对象都继承自这个对象。创建Object类型有两种,一种是使用new运算符,...
阅读 2215·2021-09-07 09:58
阅读 3390·2019-08-30 14:07
阅读 1304·2019-08-29 12:32
阅读 666·2019-08-29 11:06
阅读 3691·2019-08-26 18:18
阅读 3730·2019-08-26 17:35
阅读 1380·2019-08-26 11:35
阅读 610·2019-08-26 11:35