为什么要用到对象复制,和对象深复制,这就不说了。直接上代码
var obj={
name:{b:1}
}
function deepCopy(o){
if(typeof o !== "object"){
return o;
}
var newObj={};
for(var i in o){
//alert(deepCopy(o[i]))
console.log(deepCopy(o[i]))
newObj[i]=deepCopy(o[i]);
}
return newObj;
}
var obj2=deepCopy(obj);
obj2.name.b="d";
console.log("obj.name.b--------------"+obj.name.b)
下面来个腻害的,用jquery解决这个问题
var obj={
name:{b:1},
age:24
}
var obj2=$.extend(obj);
obj2.age=25;
obj2.name.b=2;
console.log("obj.age------------"+obj.age);//24
console.log("obj.name.b------------"+obj.name.b);//1
用jquery的继承,更改了新对象不会影响到以前对象 PS: zepto(1.4)的$.extend没有复制的作用
//更新于2016/6/13
//思路清晰写出来的代码就好看些
function clone(obj) {
var arr = [],
res = {};
if (obj instanceof Array) {
obj.forEach(function(item, i) {
arr[i] = clone(item);
})
return arr;
} else if (obj instanceof Object) {
for (var j in obj) {
res[j] = clone(obj[j]);
}
return res;
} else {
return obj;
}
}
var map = {
"name": "jack"
};
console.info(clone(map));
还有个黑科技
var _parentModel = JSON.parse(JSON.stringify(parentModel))