浅拷贝和深拷贝
var a = { as: 'sads', sds: 'sdsasd', sadd: { sads: 'sdasd', aaaa: 'sdsadsa' } var b = {}; // 直接拷贝,只是引用地址 b = a; a['as'] = 'aaaaa'; // console.log(b) // 浅拷贝,只拷贝第一层 for (var i in a) { //i 为key值 b[i] = a[i] } console.log(b) // 语法糖浅拷贝 Object.assign(b, a) //深拷贝 function deep(a, b) { for (var i in a) { var item = a[i] if (item instanceof Array) {//数组也会被instanceof判断为object,需要先判断 b[i] = []; deep(b[i], item) } else if (item instanceof Object) { b[i] = {}; deep(b[i], item) } else { b[i] = item; } } }
ps:简单数据类型相等不是引用地址