为了账号安全,请及时绑定邮箱和手机立即绑定

JS对类中数组属性提前插入了新对象,这是怎么回事?

JS对类中数组属性提前插入了新对象,这是怎么回事?

慕尼黑8549860 2018-08-15 09:09:39
我想取出这个类中的数组tables里的最后一个对象,然后对它进行修改,比如 将最后一个对象中里面的timestamp属性修改为1,然后再作为一个新的对象通过 push 插入到原来数组的最后。(!不改变原来数组中的最后一个对象)代码如下:但是奇怪的是我在修改lastTable之前输出一下数组,缩略下显示数组有一个object展开后却变成了两个,而且此时我并没有将对象中的timestamp赋值为1,但展开后的数组里面的timestamp却都变成了1(理论上因该是"1470123842")即便这只是显示错误,但是我在代码中明明只对其中一个对象的timestamp赋值了1 但是结果两个对象都都变了,这就更加奇怪了,数组的push操作被提前执行,属性的赋值被赋值到其它对象中,这该怎么解决?
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

这种结果已经告诉你你尝试修改的你认为是两个对象其实是引用了同一个对象,从数组中取出来的对象,如果你要进行修改,应该先对该对象进行复制,这里借用一下jQuery的extend方法复制:

this.lastTable = $.extend(true,{},this.table[this.table.length - 1]);


查看完整回答
反对 回复 2018-09-26
  • 1 回答
  • 0 关注
  • 747 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信