博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript 类数组对象
阅读量:6320 次
发布时间:2019-06-22

本文共 1518 字,大约阅读时间需要 5 分钟。

第三方教程:

https://segmentfault.com/a/1190000000415572http://www.jb51.net/article/59169.htm

 

何为类数组?

什么是类数组对象:它首先是一个对象,其次与数组相似,它拥有 length 属性,但却不能使用数组的方法(Array.prototype)。

只要一个对象Object,拥有 length 属性,那它就是一个类数组对象。譬如:

- document.getElementsByTagName()语句返回的就是一个类数组对象。

- 在function中,function代码内的arguments变量也是一个类数组对象。

var a = function () {    console.log(arguments) // { '0': 1, '1': 2, '2': 3, '3': 4 }    console.log(arguments.length) // 4}a(1, 2, 3, 4)

 

自定义类数组对象,但是对象的 key 必须是 Number 类型。

var a = {    '0':'a',    '1':'b',    '2':'c',    length:3};

 

像数组一样使用类数组

之所以成为“类数组”,就是因为和“数组”类似。不能直接使用数组方法,但你可以像使用数组那样,使用类数组。

var likeArrayObject = {    '0':'a',    '1':'b',    '2':'c',    length:3};// 转为数组Array.prototype.slice.call( likeArrayObject ); // [ 'a', 'b', 'c' ]// 取出第一位Array.prototype.shift.call( likeArrayObject ) // a// 数组转为字符串累加Array.prototype.join.call( likeArrayObject, ' + ' ); // a + b + c// 使用数组的map遍历方法,逐个转化为大写并且返回到新数组中Array.prototype.map.call( likeArrayObject, function(x) { return x.toUpperCase(); }); // [ 'A', 'B', 'C' ]

类数组判断
《javascript权威指南》上给出了代码用来判断一个对象是否属于“类数组”。如下:

function isArrayLike(o) {    if (o && // o is not null, undefined, etc.        typeof o === 'object' && // o is an object        isFinite(o.length) && // o.length is a finite number        o.length >= 0 && // o.length is non-negative        o.length === Math.floor(o.length) && // o.length is an integer        o.length < 4294967296) // o.length < 2^32        return true; // Then o is array-like    else        return false; // Otherwise it is not}

转载地址:http://sicaa.baihongyu.com/

你可能感兴趣的文章
使用Ext.Net时,配置文件的最简单写法
查看>>
现代程序设计 作业5
查看>>
ubuntu处理中文时设置locale
查看>>
HDOJ 2088
查看>>
Linux pipe函数
查看>>
springMVC 前后台日期格式传值解决方式之二(共二) @InitBinder的使用
查看>>
springMVC配置静态资源访问的<mvc:resources>标签的使用
查看>>
Android APP安装后不在桌面显示图标的应用场景
查看>>
Ural 1183 Brackets Sequence(区间DP+记忆化搜索)
查看>>
内部类的继承
查看>>
理解 python metaclass使用技巧与应用场景分析
查看>>
怎么面试架构师
查看>>
oracle系统包——dbms_random用法及order by 小结(转)
查看>>
SQL Server性能调优——报表数据库与业务数据库分离
查看>>
Rsync启动停止脚本
查看>>
MySQL5.6的my.ini配置
查看>>
ux.plugin.ConTpl 模版元素监听扩展
查看>>
【转】使用sklearn做单机特征工程
查看>>
springmvc+mybatis+redis(转)
查看>>
ibatis配置xml文件中CDATA的用法
查看>>