看代码说结果,求解释

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的push方法借用了Array的push,push的时候会根据实例(一般是数组,这里因为内部this实际指向obj即修改的是obj)的length添加索引属性,如该示例length为2,则添加属性2:'c'[覆盖了原有的2:'b'],并且修改实例length+1,最终结果如输出所示