淺談克隆 JavaScript
更新時間:2021年10月29日 10:53:15 投稿:hqx
這篇文章主要介紹了克隆 JavaScript,克隆又有淺克隆與深克隆,文章圍繞JavaScript淺克隆與深克隆的相關資料展開具體內容,需要的朋友可以參考一下
1、淺克隆
淺克隆無法copy數(shù)組和對象
var obj = {
name : "abs",
age : '18',
sex : 'male'
}
var obj1 = {}
function clone(Origin,target) {
target = target || {};//防止用戶不輸入target
for(var k in Origin){
target[k] = Origin[k];
}
}
clone(obj,obj1);
2、深克隆
先判斷它是什么,原始值,數(shù)組還是對象,分別處理
- 遍歷對象
- 是原始值直接
copy - 不是原始值判斷是數(shù)組還是對象
- 是數(shù)組建空數(shù)組
- 是對象建空對象
- 建立了之后再遍歷一遍原始對象或數(shù)組里是啥
- 遞歸
var obj = {
name : 'lin',
age : '18',
sex : 'male',
card : [1,2,3,4],
wife : {
name : 'bcsds',
son : {
name : 'aaa'
},
age : '23'
}
}
var obj1 = {}
//原始值和對象數(shù)組typeof返回值有區(qū)別
function deepClone(origin,target) {
target = target || {};
for(var k in origin) {
if(origin.hasOwnProperty(k)){
if(typeof(origin[k]) == 'object') {
if(Object.prototype.toString.call(origin[k]) == '[object Array]') {
target[k] = [];
}else {
target[k] = {};
}
deepClone(origin[k],target[k]);
}else {
target[k] = origin[k];
}
}
}
}
deepClone(obj,obj1);

