长得像数组 但是数组的方法都没法用
比如 arguments
规则
属性要为索引属性(即数字) 必须有length属性 最好加上push方法
若再加上splice方法后 就长得像数组了
如
var obj = {
‘0’ : ‘a’,
‘1’ : ‘b’,
‘2’ : ‘c’,
‘length’ : 3,
‘push’ : Array.prototype.push,
‘splice’ : Array.prototype.splice
}
//此时obj是对象 但可以当做数组来使用 所以称为类数组
先简单理解一下 push 方法的底层原理
Array.prototype.push = function(target){
this[this.length] = target;
this.length ++;
}
所以类数组可以动态的增长length属性
例题:
var obj = {
‘2’ : ‘a’,
‘3’ : ‘b’,
‘length’ : 2,
‘push’ : Array.prototype.push
}
obj.push(‘c’);
obj.push(‘d’);
此时 obj 长什么样
//因为length为2 所以直接在索引2处添加数据c 然后length ++
//此时length为3 在索引3处添加数据d 然后length ++
var obj = {
‘2’ : ‘c’,
‘3’ : ‘d’,
‘length’ : 4,
‘push’ : Array.prototype.push
}