js深拷贝代码
function deepClone(data) {
var t = type(data), o, i, ni;
if(t === 'array') {
o = [];
}else if( t === 'object') {
o = {};
}else {
return data;
}
if(t === 'array') {
for (i = 0, ni = data.length; i < ni; i++) {
o.push(deepClone(data[i]));
}
return o;
}else if( t === 'object') {
for( i in data) {
o[i] = deepClone(data[i]);
}
return o;
}
}
关于function范例,这里是直接赋值的,同享一个内存值。这是由于函数更多的是完成某些功用,有个输入值和返回值,而且关于上层营业而言更多的是完成营业功用,并不需要真正将函数深拷贝。