JS中的深浅拷贝
浅拷贝:
深拷贝:
var datas = [{ id: 1, name: '家电', goods: [{ id: 11, gname: '冰箱' }, { id: 12, gname: '空调' }] }, { id: 2, name: '数码' }] var o = {}; function copy(newD, oldD) { for (var k in oldD) { //先获取属性 var item = oldD[k]; if (item instanceof Array) { //先写数组再写对象,因为数组也属于一个对象,先写对象会跳过 newD[k] = []; copy(newD[k], item); //递归深拷贝 } else if (item instanceof Object) { newD[k] = {}; copy(newD[k], item); } else newD[k] = item; //无更深,浅拷贝 } // return newD; } copy(o, datas) console.log(o);