共计 856 个字符,预计需要花费 3 分钟才能阅读完成。
导读 | 这篇文章主要介绍了克隆 JavaScript, 克隆又有浅克隆与深克隆,文章围绕 JavaScript 浅克隆与深克隆的相关资料展开具体内容, 需要的朋友可以参考一下 |
1、浅克隆
浅克隆无法 copy 数组和对象
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、深克隆
先判断它是什么,原始值,数组还是对象,分别处理
遍历对象
是原始值直接 copy
不是原始值判断是数组还是对象
是数组建空数组
是对象建空对象
建立了之后再遍历一遍原始对象或数组里是啥
递归
var obj = {
name : 'lin',
age : '18',
sex : 'male',
card : [1,2,3,4],
wife : {
name : 'bcsds',
son : {name : 'aaa'},
age : '23'
}
}
var obj1 = {}
// 原始值和对象数组 typeof 返回值有区别
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);
正文完
星哥玩云-微信公众号