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

查看:123
本文介绍了javascript - JS对类中数组属性提前插入了新对象,这是怎么回事?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

代码如下:

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

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

解决方案

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

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

这篇关于javascript - JS对类中数组属性提前插入了新对象,这是怎么回事?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆