对只有原始值的对象进行的克隆:




obj1 改动之后,obj也改动了,所以这是不应该的
接下来写一个深度克隆:

var obj = {
name : 'abc',
sex : 'female',
age : '23',
card : ['a', 'b', 'c'],
family : {
grand : 'li',
father : 'li',
mother : 'liu',
test : {
aaa : 'aaaa',
bbb : 'bbbb',
ccc : 'cccc'
}
}
}
var obj1 = {
}
function deepclone(origin, target) {
target = target || {};
var prop;
for(prop in origin){
if(origin.hasOwnProperty(prop))
{
var str = Object.prototype.toString.call(origin[prop]);
if(str != '[object Array]' && str != '[object Object]' && str != null)
{
target[prop] = origin[prop];
}
else if(str == '[object Array]')
{
target[prop] = [];
deepclone(origin[prop],target[prop]);
}
else if(str == '[object Object]')
{
target[prop] = {};
deepclone(origin[prop],target[prop]);
}
}
}
}
deepclone(obj,obj1);

本文深入探讨了在JavaScript中实现深度克隆的方法,通过实例详细解释了如何避免原始对象与克隆对象之间的引用关联,确保克隆后的对象独立于原始对象。
4万+

被折叠的 条评论
为什么被折叠?



