vue数组或对象直接赋值问题

data:{
	index:0,
	list: [
        {
          title:'名字1',
        },
        {
          title:'名字2',
        }
    ],
    froms:{
		title:''
	}
},
methods:{
	change(){
		this.list[index] = this.froms;  //这会导致改变froms的数据的时候,list[0]也会改变;
		
		//可使用JSON.parse(JSON.stringify(this.form))这种方式进行深拷贝赋值
		this.$set(this.list,index,JSON.parse(JSON.stringify(this.form)))
		
		//Object.assign(this.form)是浅拷贝,但是Object.assign({},this.form)是深拷贝
		//注:当对象中只有一级属性,没有二级属性的时候,此方法为深拷贝。
			//但是对象中有对象的时候,此方法,在二级属性以后就是浅拷贝
		this.$set(this.list,this.dialogIndex,Object.assign({},this.form))	
		//Object.assign(this.form,this.list[index]) 也可直接使用此方法赋值
		
		//使用...扩展运算符也可以实现深拷贝
		this.$set(this.list,this.dialogIndex, {...this.form})
	}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值