Arraylike类数组有着数组一样的数据,但是没有数组的实力方法,并且是一个Object。
// 一个伪数组
var a = {
0: 1,
1: 2,
length: 2
}
// 题目
var a = {
2: 3,
3: 4,
length: 2,
push: Array.prototype.push,
splice: Array.prototype.splice
}
a.push(1)
a.push(2)
// a Object(4) [empty × 2, 1, 2, push: ƒ, splice: ƒ]
why?看看MDN
push是按照length来判断当前插入的位置,也就是说
a.push(1) ====> a[a.length] = 1 && a.length ++
改变位置的值,同时长度+1
上面改变一下如果a的初始length = 0
那么 最后打印: Object(2) [1, 2, 2: 3, 3: 4, push: ƒ, splice: ƒ]
同理我们了解一下splice
a.splice(0, 2) 表示删除从0开始的2个
那么针对的索引0和1,同时length - 2
打印结果:Object(4) [ 2: 3, 3: 4, push: ƒ, splice: ƒ]