(精华)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);

你可能感兴趣的:(#,Javascript,高级篇,javascript,jquery,es6,前端)