对象拷贝
for in 对象复制继承
浅拷贝
for(var attr in Parent){
children[attr] = Parent[attr];
}
function extend(obj1,obj2){
for(var attr in obj2){
obj1[attr] = obj2[attr];
}
}
extend(children,Parent);
深拷贝
var obj = {
a:{b:10}
}
function deepCopy(obj){
if(typeof obj != 'object'){
//console.trace();
return obj;
}
var newObj = {};
for(var attr in obj){
newObj[attr] = arguments.callee(obj[attr]);
}
return newObj;
}
var obj2 = deepCopy(obj);
obj2.a.b=20;
alert(obj.a.b)
写法2——渡一
浅克隆
var obj = { name:'abc', age:123, sex:'female' } var obj1 = {} function clone(origin,target){ var target = target || {}; for(var prop in origin){ target[prop] = origin[prop]; } return target; } clone(obj,obj1)
深克隆
/*deepcopy*/ var obj = { name : 'abc', age : 19, card : ['visa','master'], wife : { name : 'bcd', son : { name : 'aaa' } } } function deepCopy(origin,target){ var target = target || {}, toStr = Object.prototype.toString(), arrStr = "[Object Array]"; for(var prop in origin){ if(origin[prop] != "null" && origin.hasOwnProperty(prop)){ //判断是不是自己对象上的属性 if(typeof(origin[prop]) == 'Object'){ //是不是引用值 target[prop] = toStr.call(origin[prop]) == arrStr ? [] : {}; //判断是[]还是{} deepCopy(origin[prop],target[prop]); //递归继续分解 }else{ target[prop] = origin[prop] } } } return target; } var obj1={} deepCopy(obj,obj1)

浙公网安备 33010602011771号