类数组
1、可以利用属性名模拟数组的特性
2、可以动态的增长 length 属性
3、如果强行让类数组调用 push 方法,则会根据 length 属性值的位置进行属性的扩充。
例下面是类数组的基本形态
var obj = {
"0" : 'a',
"1" : 'b',
"2" : 'c',
"length" : 3,
"push" : Array.prototype.push
}
在控制台 push(‘d’)以后,obj 的 object 多了一个 3:d,长度也变成了 4
类数组:属性要为索引(数字)属性,必须要有 length 属性,最好加上 push 方法。
例:如果给一个对象加上 splice 方法,那么这个对象就长得像数组了。但他仍然是对
象,但是可以当做数组来用,需要自己添方法。
例如:
var obj = {
"0" : 'a',
"1" : 'b',
"2" : 'c',
"length" : 3,
"push" : Array.prototype.push,
"splice" : Array.prototype.splice
}
Array.prototype.push = function(target) {
this[this.length] = target;
this.length ++;
}
例如: 阿里巴巴题目,问这个obj长什么样子?
var obj = {
"2" : "a",
"3" : "b",
"length" : 2,
"push" : Array.prototype.push
}
obj.push('c');
obj.push("d");
关键点在 length 上面,根据 length 改变而改变,走一下 length,即:
Array.prototype.push = function(target) {
this[this.length] = target;
this.length ++;
}
例如:
var obj = {
"1" : 'a',
"2" : 'c',
"3" : 'd',
"length" : 3,
"push" : Array.prototype.push
}
obj.push('b');
例如:
var obj = {
"0" : 'a',
"1" : 'b',
"2" : 'c',
name : 'abc',
age : 123,
length : 3,
push : Array.prototype.push,
splice : Array.prototype.splice
}
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20200626054741141.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzQxMDI2Nw==,size_16,color_FFFFFF,t_70)