一、Object.assign()原理以及实现
Object.assign()函数可以将对象中所有可枚举的值从一个或者多个对象复制到目标对象中,同时返回目标对象。程序示例:
Object.assign(target, ...sources)
浅拷贝就是拷贝第一层的基本类型的值,以及第一层的引用地址。
二、实现简单的浅拷贝和深拷贝
1、浅拷贝
function cloneShallow(source){
var target = {};
for(var key in source){
if(Object.prototype.hasOwnProperty.call(source, key)){
target[key] = source[key];
}
}
return target;
}
二、深拷贝
function cloneDeep(source){
var target = {};
for(var key in source){
if(Object.prototype.hasOwnProperty.call(source, key)){
if(typeof source[key] === "object"){ //如果源对象的属性也是对象的话,就递归调用本函数,继续解析
target[key] = cloneDeep(source[key]);
}else{ //如果源对象的属性不是对象的话,就直接赋值
target[key] = source[key];
}
}
}
return target;
}