(精华)2020年6月25日 JavaScript高级篇 深拷贝和浅拷贝

一:浅拷贝

function deep(obj){
    var mn = {};
    for(var key in obj) {
        mn[key]  = obj[key]
     }   
     return  mn;      
}
var obj0 = deep(obj);
//对象
var obj1 = Object.assign({},obj);
var {...obj2} = obj;  //扩展运算符
//数组
var arr01 = [1,2,3];
arr02= arr01.slice(0);
var [...arr03] = arr01;//扩展运算符
var arr04 = Array.from(arr01);
var arr05=arr01.concat()

二:深拷贝

var onk1= JSON.parse(JSON.stringify(onk));//必须是单纯数据对象
//for循环递归调用
function extendDeep(source){
	var target;
	if(typeof source!='object'){
	    target = source;
	    return target;
	}
	target =  Array.isArray(source)?[]:{};
	for(var key in source){ 
	    if(typeof source[key]!='object'){
	        target[key] = source[key];
	    } else { 
	        target[key] = extendDeep(source[key])
	    }
	}
	return target;
}
var newObj2  = extendDeep(obj);

©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:上身试试 返回首页