1、Object.assign()原理以及实现javascript
Object.assign()函数能够将对象中全部可枚举的值从一个或者多个对象复制到目标对象中,同时返回目标对象。程序示例:java
Object.assign(target, ...sources)
复制代码
浅拷贝就是拷贝第一层的基本类型的值,以及第一层的引用地址。函数
2、实现简单的浅拷贝和深拷贝ui
一、浅拷贝spa
function cloneShallow(source){
var target = {};
for(var key in source){
if(Object.prototype.hasOwnProperty.call(source, key)){
target[key] = source[key];
}
}
return target;
}
复制代码
2、深拷贝prototype
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;
}
复制代码