类数组就是长得像数组,可以当数组用,也可以当对象用,但不是数组。
1、可以利用属性名模拟数组特性。
2、可以动态的增长length属性。
3、如果强行让类数组调用push方法,
则会根据length属性值的位置进行属性的扩充。
1、可以利用属性名模拟数组特性。
2、可以动态的增长length属性。
3、如果强行让类数组调用push方法,
则会根据length属性值的位置进行属性的扩充。
arguments[] 就是类数组
function test(){
console.log(arguments);
arguments.push(7);
}
test(1,2,3,4,5);
---不好使,可见argument不能用push,说明不是数组,是伪数组
var obj = {
'0': 'a',
'1' : 'b',
'2' : 'c',
"length" : 3,
"push" : Array.prototype.push
"splice" : Array.prototype.splice
}
类数组push方法的内部原理
Array.prototype.push = function (target){
obj[obj.length] = target;
obj.length ++;
}
类数组所具备的特性:
属性要为索引(数字)属性,
必须要有length属性,最好加上push
var obj = {
'2' : 'a',
'3' : 'b',
'length' : 2,
'push' : Array.prototype.push,
'splice' : Array.prototype.splice,
}
obj.push('c'); //执行这个之前length为2,故地址索引应该是2;执行过后length变为3
obj.push('d'); // 执行之前length为3,故地址索引为3;执行过后length变为4
// obj变为:
obj = {
'2' : c,
'3' : d,
length : 4,
}