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;
}
複製代碼