js 对象的深拷贝
我在这里就不多做文字的解释了,直接上源码
第一种:
var obj={
name:"1111",
age:123,
sex:200,
arrTest:["233","3333",[90,9]]
}
var obj1={}
function deepClone(origin,target){
var target=target||{},
toStr=Object.prototype.toString,
arrStr="[object Array]";
for(var key in origin){
if(origin.hasOwnProperty(key)){
if(origin[key]!==null&& typeof(origin[key])=="object"){
if(toStr.call(origin[key])==arrStr){
target[key]=[];
}else{
target[key]={};
}
deepClone(origin[key],target[key])
}else{
target[key]=origin[key]
}
}
}
return target
}
第二种:
var obj={
a:100,
b:[1,2,3],
c:{
x:10
},
d:/^\d+$/
}
function deeClone(obj) {
if(typeof obj!=='object') {
return obj;
}
if(obj==='null') {
return null;
}
if(obj instanceof Date) {
return new Date(obj);
}
if(obj instanceof RegExp) {
return new RegExp(obj)
}
var newobj=new obj.constructor;
for (var key in obj) {
if(obj.hasOwnProperty(key)) {
newobj[key]=deeClone(obj[key])
}
}
return newobj;
}
let obj2=deeClone(obj)

浙公网安备 33010602011771号