obj = {
1: 'a',
2: 'b',
length: 2,
push: Array.prototype.push
}
obj.push('c')
console.log(obj.length) //3
console.log(obj[0]) // undefined
console.log(obj[1]) // a
console.log(obj[2]) // c
console.log(obj[3]) // undefined
obj = {
1: 'a',
2: 'b',
length: 2,
push: Array.prototype.push
}
obj.push('c')
console.log(obj.length) //3
console.log(obj[0]) // undefined
console.log(obj[1]) // a
console.log(obj[2]) // c
console.log(obj[3]) // undefined
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
obj的push方法借用了Array的push,push的时候会根据实例(一般是数组,这里因为内部this实际指向obj即修改的是obj)的length添加索引属性,如该示例length为2,则添加属性2:'c'[覆盖了原有的2:'b'],并且修改实例length+1,最终结果如输出所示