JS引用类型

重新总结一遍,最近推荐vue给后端的小伙伴使用,涉及到引用对象的值一变全变的问题,比如说一个列表绑定的data数组,编辑某一条的表单数据的时候,直接取列表对象的话,在表单中值改变的同时,列表中的数据也跟着变了,这显然不是我们想要的。

这个问题的原因就在于JS中的引用类型对象,于是有以下代码亲测结果:


基本类型(Number,String)


Array


Object


可见,基本类型可以认为是传值赋值,而(狭义上的)对象类型则是引用赋值,会携带内存地址,相当于指针,其中一个拷贝变化,全部拷贝都会跟着变化。而对于MVVM框架来说,它的实例对应的数据都是存放在一个叫做data的对象中,相关的变量实际上只是data的属性而已,也就是说data本身就是引用类型的对象字面量,也就是属于上面所说的Object的情况。


解决方法:

var b = JSON.parse(JSON.stringify(a));


转换为JSON字符串之后可以解除引用



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值