JavaScript 循环添加对象 遇到一个不太理解的东西

RobGavin 2017-09-14 11:21:24
直接上代码:
var arr = new Array()
var obj = new Object()
for(var i=0;i<10;i++){
obj.num = i;
arr.push(obj)
console.log(arr)
}
然后打开控制台可以看到如下:
觉得没问题,当我去展开的时候:
打印的每个对象都全部显示出来,不太理解其中原因,新人求指教
...全文
222 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
斯洛文尼亚旅游 2017-09-14
精选
  • 打赏
  • 举报
回复
引用的对象最后展开就是最终内容 你看后面不是有个感叹号,你要看即时结果,转为字符串 console.log(JSON.stringify(arr))

Web开发学习资料推荐
javascript运行机制浅析
javascript混淆加密
chun835644887 2017-09-15
  • 打赏
  • 举报
回复
多看几次就习惯了
Crying_cat 2017-09-14
  • 打赏
  • 举报
回复
因为你console是写在for循环里边的,每循环一次都会console出来当前的结果, 所以你看到的是一大堆的东西,如果你只想要最后的结果,只需要把console写在for循环结束之后即可
天际的海浪 2017-09-14
  • 打赏
  • 举报
回复
再有,你的代码obj对象只创建了一次,每次push到数组中的都是这同一个对象,数组中所有对象的num属性都是同一个值(最后一次赋的值)。 应该把var obj = new Object()放到循环内,让每次循环都创建一个新的对象。
天际的海浪 2017-09-14
  • 打赏
  • 举报
回复
console.log输出的对象展开显示的属性,不是console.log输出时的值, 而是鼠标点击三角展开时的属性值。 你看最后有个蓝方块的i号,就是提示这个用的

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧