30秒了解js类数组对象

JavaScript中,数组是一个特殊的对象,其属性名为正整数,且其length属性会随着数组成员的增减而发生变化,同时又从Array构造函数中继承了一些用于进行数组操作的方法

对于一个普通的对象来说,如果它的所有property名均为正整数,同时也有相应的length属性,那么虽然该对象并不是由Array构造函数所创建的,它依然呈现出数组的行为,在这种情况下,这些对象被称为“类数组对象”。

  1. 相同点:获取属性值都是通过属性名的方式获取
// 普通对象,通过属性名获取属性值
var obj1 ={0:42,1:52,2:63}
console.log(obj[1]); // 52
var obj1 ={0:42,'1':52,2:63}
console.log(obj['1']); // 52 
var obj1 ={'a':42,'b':52,'1':63}
console.log(obj['b']); // 52

// 类数组对象,本质也是通过属性名获取属性值
var obj2 ={0:42,'1':52,2:63,length:3}
console.log(obj[1]); // 52 
var obj2 ={0:42,1:52,2:63,length:3}
console.log(obj[1]); // 52
  1. 不同点:能否使用 Array 原型对象上的方法

    类数组对象拥有一个特性:可以在类数组对象上应用Array原型对象上的方法。比如,在ECMAScript 5标准中,可以使用Array原型对象上的 join 方法来将上面的对象obj合并成字符串:

// 普通对象
var obj1 ={0:42,1:52,2:63}
console.log(Array.prototype.slice.call(obj1, 0));//“[]”
// 类数组对象
var obj2 ={0:42,1:52,2:63,length:3}
console.log(Array.prototype.slice.call(obj2, 0));//[42,52,63]

其他类数组对象

  1. DOM 集合

在浏览器环境中,document.getElementsByTagName()语句返回的就是一个类数组对象。

  1. 函数参数列表

在function调用中,function代码内的arguments变量(保存传入的参数)也是一个类数组对象。

  1. 字符串对象

在ECMAScript 5标准中,字符串string就是一个只读的类数组对象:

var str = "hello";
console.log(str[0]);//h
console.log(Array.prototype.join.call(str, "-"));// h-e-l-l-o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值