对于对象数组的赋值,加入到对象中,加入到集合,数组里面,想不被另外一个对象改变值,就深拷贝
下面自己写的一段深拷贝代码
Object.prototype.clone = function() {
var datas = arguments[0] || this;
if(Object.prototype.toString.call(datas) == '[object Object]' || //仅对数组对象进行深拷贝
Object.prototype.toString.call(datas) == '[object Array]') {
var returnval = Object.prototype.toString.call(datas) == '[object Object]' ? {} : [];
for(var key in datas) { //这里使用for是因为对象不能用for(var index; < ; index++)的形式
var data = datas[key];
var flag = Object.prototype.toString.call(data) == '[object Object]' || //对值还要判断
Object.prototype.toString.call(data) == '[object Array]';
data = flag? data.clone() : data;
returnval[key] = data;
}
return returnval;
}
return datas;
}
这里重写Object原型上的clone的作用是为了为何对象都能调用clone,如果单独想分开数组,对象,或者其他js内置对象,请重新扩展它们原型上的clone