json数组用for循环进行赋值并push,导致json所有的数据都变成一样的了,这是怎么回事

Aomr_Dark 2016-07-21 04:30:13


如图所示,json对象c放在for循环内的时候输出的是修改后的 数据,但是在循环外声明的时候,数组的所有数据都变成一样的了,不知道怎么回事,求解答
...全文
3065 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
那请问楼主最后怎么才能动态修改单独每个object对象的属性值呢
orange0111 2017-05-08
  • 打赏
  • 举报
回复 1
引用 6 楼 Aomr_Dark 的回复:
[quote=引用 5 楼 jslang 的回复:] 因为Object对象是地址引用传递的,c对象在循环外声明时,每次a.push(c)添加的c都是同一个对象。就是说a[0],a[1],a[2]中存放的都是同一个对象的引用地址,在修改这个对象的属性后,所有存放这个对象引用的地方都会受到影响。
多谢解惑,明白了[/quote] 恍然大悟啊
Aomr_Dark 2016-07-21
  • 打赏
  • 举报
回复
引用 5 楼 jslang 的回复:
因为Object对象是地址引用传递的,c对象在循环外声明时,每次a.push(c)添加的c都是同一个对象。就是说a[0],a[1],a[2]中存放的都是同一个对象的引用地址,在修改这个对象的属性后,所有存放这个对象引用的地方都会受到影响。
多谢解惑,明白了
天际的海浪 2016-07-21
  • 打赏
  • 举报
回复
因为Object对象是地址引用传递的,c对象在循环外声明时,每次a.push(c)添加的c都是同一个对象。就是说a[0],a[1],a[2]中存放的都是同一个对象的引用地址,在修改这个对象的属性后,所有存放这个对象引用的地方都会受到影响。
Aomr_Dark 2016-07-21
  • 打赏
  • 举报
回复
引用 1 楼 functionsub 的回复:
一个是每次对C这个变量重新赋值,一个是每次对C这个变量的一个属性重新赋值。
能否具体解释一下,哪个是变量赋值,哪个是属性赋值
Aomr_Dark 2016-07-21
  • 打赏
  • 举报
回复
表示不能理解,能具体说明一下吗
functionsub 2016-07-21
  • 打赏
  • 举报
回复
一个是每次对C这个变量重新赋值,一个是每次对C这个变量的一个属性重新赋值。

87,995

社区成员

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

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