dataList赋值给CA后,再修改dataList的一个值,再打印CA,CA跟着改变了。是什么原因。如何让CA不跟着dataList改变。
wxml代码如下:
<view wx:for="{{dataList}}" wx:key="{{unique}}" bindtap="test">{{item.val}}</view>
js代码如下:
var ca = "";
Page({
data: {
dataList:[
{ name: '1', val: '1' },
{ name: '2', val: '2' },
],
},
onLoad: function (options) {
ca = this.data.dataList;
console.log(ca);
},
test:function(e){
ca = this.data.dataList;
console.log(ca)
var d = "dataList[0].name";
this.setData({
[d]:3,
})
console.log(ca)
}
})
深拷贝一下 ca = JSON.parse(JSON.stringify(this.data.dataList))
因为两者指向的是同一个内存地址,JSON.parse(JSON.stringify())虽然可以实现楼主需求,但是该方法也存在缺陷,建议楼主学习一下JS内存调用机制与对象深度拷贝
JSON.parse(JSON.stringify([you object/array]));
这应该是写法最简单的深拷贝了吧