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

我想取出这个类中的数组tables里的最后一个对象,然后对它进行修改,比如 将最后一个对象中里面的timestamp属性修改为1,然后再作为一个新的对象通过 push 插入到原来数组的最后。(!不改变原来数组中的最后一个对象)

代码如下:

https://img1.mukewang.com/5bab137f00018c8204900290.jpg

https://img1.mukewang.com/5bab138a00016cc109330445.jpg

但是奇怪的是我在修改lastTable之前输出一下数组,缩略下显示数组有一个object展开后却变成了两个,而且此时我并没有将对象中的timestamp赋值为1,但展开后的数组里面的timestamp却都变成了1(理论上因该是"1470123842")

https://img4.mukewang.com/5bab139a00014ac202680214.jpg

即便这只是显示错误,但是我在代码中明明只对其中一个对象的timestamp赋值了1 但是结果两个对象都都变了,这就更加奇怪了,数组的push操作被提前执行,属性的赋值被赋值到其它对象中,这该怎么解决?

慕尼黑8549860
浏览 757回答 1
1回答

侃侃尔雅

这种结果已经告诉你你尝试修改的你认为是两个对象其实是引用了同一个对象,从数组中取出来的对象,如果你要进行修改,应该先对该对象进行复制,这里借用一下jQuery的extend方法复制:this.lastTable = $.extend(true,{},this.table[this.table.length - 1]);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript