对只有原始值的对象进行的克隆:
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);