首页 > 技术文章 > vue双向绑定和深浅拷贝

Shyno 2020-06-11 17:02 原文

现象描述:

          vue 在使用的时候,当table绑定了某个data的时候.假如某个el-table-column下面的有个方法传参(data.row),然后在方法中用一个obj=data.row.(这里是浅拷贝).如果在这个方法中把这个参数给了另一个v-model的数据,操作令一个元素的时候会同步更改table中的传参的那一行的数据.这种传参方式是浅拷贝,多个地址指向同一个堆,所有两方会一起修改.

原因:

        1.vue的双向绑定,数据更改同时更改视觉展示

        2.函数的形参和实参的传递方式是浅拷贝.

 

解决方案:

        1.传递实参的时候,先深拷贝一个数据,再传给函数.

        2.形参接收实参的时候不用"=",而是将形参深拷贝一份.再操作拷贝的那份.

 

深拷贝的方式:

    1.先JSON.stringify()JSON.parse()

    2.for....in获取所有属性以及值,并且给另一个对象(以及其他遍历属性的方法).

         3.object.assign()方式直接返回一个新对象

推荐阅读