新人求教js数组的问题

qq_41261804 2018-05-24 06:01:37
a和b两个js文件

假设 a文件有数组 this.arr = new Array("b","c");
然后this.b = new b();

把数组传过去
this.b.init(this.arr);

b文件
function init(e) 接收到了
然后
this.ee = e;
this.ee.unshift("a"); //在数组首位添加了一个元素

b文件 console.log(this.ee) // [a,b,c] 这是正常的

但是
a文件 console.log(this.arr) //[a,b,c]
这是啥情况?
问题1:为什么a文件的数组也跟着变了?
问题2:怎么写才能让a文件的数组不受影响?
求解
...全文
788 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
___紫菜 2018-05-25
  • 打赏
  • 举报
回复
楼上正解
75闪光雷 2018-05-25
  • 打赏
  • 举报
回复
楼上正解
天际的海浪 2018-05-24
  • 打赏
  • 举报
回复
因为数组或对象都是按引用地址传递的。 你传参时传递的是数组的地址。这会使两个变量指向同一个地址。 这样两个变量操作的就是同一个数组,自然会相互影响了。 解决方法是在传参时创建一个新的数组。 this.b.init(this.arr.slice());

87,910

社区成员

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

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