第1.2种方法:JSON方法和assign
缺陷:函数不能拷贝
注:两种方法混合实际上只有assign起作用,并且assign只能拷贝第一层,主要拷贝方法还是用递归比较好,通用!!!
let obj=Object.assign({},JSON.parse(JSON.stringify(obj)))
第3种 递归for in
function copy(resource){
let result=resource instanceof Array?[]:{}
for(key in resource){
if(typeof resource[key]==="object"&&resource!==null){
result[key]=copy(resource[key])}
continue
}
result[key]=resource[key]
return result
}
9.17日:工作中想用JSON转数组为字符串,结果转不了,这个问题到底是因为什么
11.19日经测试是正常使用的
function isObject(obj){
if(typeof obj!='object'||obj===null){
return true
}
}
function objectCopy(obj){
let result=Array.isArray(obj)?[]:{};
for (key in obj){
if(typeof obj[key]==='object'&&obj[key]!=null){
result[key]=objectCopy(obj[key])
}else{
result[key]=obj[key]
}
}
return result
}
function merge(obj){
if(isObject(obj)){
return obj
};
let result=objectCopy(obj);
return result
}
let result=merge({name:'xin',arr:[1,2,2,4]})