类数组的组成部分
属性必须为索引(数字)属性
必须有length属性
最好有push方法
var obj = {
'0':'a',
'1':'b',
'2':'c',
'length':3,// 必须有length属性,没有length属性,不构成类数组
'push':Array.prototype.push,// 添加数组方法
//'splice':Array.prototype.splice// 把对象形式转换为数组形式
}
此时执行obj.push('d')的话会在这个类数组中push一条数据,同时length自动加1
那么下面我们看一道题
var obj = {
'2':'a',
'3':'b',
'length':2,
'push':Array.prototype.push
}
obj.push('c')
obj.push('d')
此时的输出结果为
此时可以看出当向这个类数组push新数据的时候,是根据它自身的length来的,也就是说新添加的数据是根据length来确定索引位置的
类数组添加数据的过程
Array.prototype.push = function (target) {
obj[obj.length] = target
obj.length ++
}
类数组的优势
var obj = {
'0':'a',
'1':'b',
'3':'c',
name:'abc',
age: 18,
sex: 'man',
length: 3,
push:Array.prototype.push,
splice:Array.prototype'splice
}
同时包含对象和数组,都能读取(读取全部属性可以用for in 循环)
类数组不具备数组方法,如果想要使用数组方法自己添加