http.getData().then(function(data) {
//填充数据
self._allCheckData = data;
self._checkedData = data;
})
在后面会改变其中某一个checkData,然后两个值便一起改了,应该怎么解决呢?
可能是指向了同一个对象,你后续的操作其实操作的是同一个指向。
解决方法,可以克隆一份data给另外个属性。
使用Object.assign
MDN
http.getData().then(function(data) {
//填充数据
self._allCheckData = data;
self._checkedData = Object.assign({}, data); // 要加一些合法性判断
})
同熊丸子
你可以这样
var clone = function(o) {
var r = {};
for (var p in o) {
if (o.hasOwnProperty(p)) {
if(typeof o[p] == 'object'){
r[p] = clone(o[p]);
} else {
r[p] = o[p];
}
}
}
return r;
};
var a = clone(data);
对象数据类型是一个引用,指向的内存中的真实对象