JS 基础篇(深拷贝和浅拷贝)

浅拷贝的几种方式

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);
原创文章 207 获赞 173 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_41181778/article/details/104049306