请教个js数组添加对象的问题。

obliviousSing 2016-06-13 06:13:15

var arry=[];
var item={'a':1,'b':2};
arry.push(item);
item['c']=3;
console.log(JSON.stringify(arry));


请问下为什么打印的是{'a':1,'b':2,'c':3}呢,用settimeout延时后依旧数组里面有3个对象,请问下这是什么原因啊。
...全文
253 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
obliviousSing 2016-06-13
  • 打赏
  • 举报
回复
引用 2 楼 KK3K2005 的回复:
你往抽屉里装了个袋子 袋子里有2个水果 然后再往袋子里加1个水果 现在抽屉里有几个水果? 当然是3个
懂了,多谢了。
obliviousSing 2016-06-13
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
因为对象是引用传送,不是值传送。 执行arry.push(item)之后arry[0]和item中存放的是同一个对象的引用地址。 改变item变量引用地址所指向对象的属性,arry[0]也是一起改变。
懂了,多谢了。
KK3K2005 2016-06-13
  • 打赏
  • 举报
回复
你往抽屉里装了个袋子 袋子里有2个水果 然后再往袋子里加1个水果 现在抽屉里有几个水果? 当然是3个
天际的海浪 2016-06-13
  • 打赏
  • 举报
回复
因为对象是引用传送,不是值传送。 执行arry.push(item)之后arry[0]和item中存放的是同一个对象的引用地址。 改变item变量引用地址所指向对象的属性,arry[0]也是一起改变。

87,907

社区成员

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

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