深拷贝的方法
- json.parse(json.stringfy)
- 递归函数
/* 递归实现深拷贝 */
let obj = {name:'lnalna',age:18,msg:{height:158}}
function copy(obj){
/* 声明一个变量用来储存拷贝之后的内容 */
let newObj = null
/* 判断拷贝对象obj数据类型
* 由于null不可以循环但类型又是object,所以这个需要对null进行判断
*/
if(typeof obj === 'object' && obj!==null){
/* 复杂数据类型进入递归 */
/* 根据参数的具体数据类型声明不同的类型来储存 */
newObj = obj instanceof Array ? []:{}
/* 遍历obj 实现赋值*/
for(let key in obj){
/*循环obj 中的每一项,如果里面还有复杂数据类型,
*则直接利用递归再次调用copy函数
*/
newObj[key] = call(obj[key])
}
}else{
/* 简单数据类型直接赋值 */
newObj = obj
}
/* 函数必须有返回值,否则结构为undefined */
return newObj
}
console.log(copy(obj),obj);
- 三方库 lodash