看代码说结果,求解释

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
阅读 1.4k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题