克隆分为浅层克隆和深度克隆
//浅层克隆
var obj = {
name: ‘a’,
age: 2,
family: {
father: ‘aa’,
mother: ‘bb’
}
}
var obj1 = {}
function clone(origin, target) {
for (var prop in origin) {
target[prop] = origin[prop];
}
}
clone(obj, obj1);
//深层克隆
var obj2 = {
name: ‘a’,
age: 2,
family: {
father: ‘aa’,
mother: ‘bb’
}
}
var obj3 = {}
function deepClone(origin, target) {
var target = target || {},
toStr = Object.prototype.toString,
arrType = ‘[object Array]’;
for (var prop in origin) {
if (origin.hasOwnProperty(prop)) {
if (origin[prop] !== null && typeof(origin[prop]) == ‘object’) { //判断是否为null和对象
if(toStr.call(origin[prop]) == arrType){ //判断是否为数组
target[prop] = [];
}else{
target[prop] = {};
}
deepClone(origin[prop], target[prop]);
} else {
target[prop] = origin[prop];
}
}
}
return target;
}
deepClone(obj2, obj3);
JS克隆
最新推荐文章于 2024-03-29 17:02:05 发布