索引1、对象深拷贝2、网络图片转base64、在线图片点击下载3、对象深拷贝4、对象深拷贝5、对象深拷贝6、对象深拷贝1、对象深拷贝(一级属性拷贝和multiplelevelattributenestedcopy)//深拷贝函数(满足属性多级嵌套)functiondeepCloneObj(sourceObj){varobj=(sourceObjinstanceofArray)?[]:{};for(varkeyinsourceObj){vartmp=sourceObj[key];//处理重复引用以防止无限循环if(tmp===sourceObj){continue;}if(typeoftmp==='object'){obj[key]=arguments.callee(tmp);//属性是对象,递归深拷贝}else{obj[key]=tmp;}}返回对象;}//1。测试对象的深拷贝varobj={info:{name:'sledgehammer'},sign:'xxx'};varobj2=Object.assign({},obj);//一级属性的深拷贝(es6的object.assign函数特性)varobj3={...obj};//一级属性深拷贝(es6扩展算子)varobj4=deepCloneObj(obj);//递归深拷贝所有层级属性varobj5=JSON.parse(JSON.stringify(obj));//深拷贝所有层级属性console.log('obj:',JSON.stringify(obj));console.log('obj2:',JSON.stringify(obj2));console.log('obj3:',JSON.stringify(obj3));控制台。日志('obj4:',JSON.stringify(obj4));console.log('obj5:',JSON.stringify(obj5));控制台.log(".........结束.........");setTimeout(function(){obj.sign='a**b';obj.info.name='一二三';console.log('\n****更新信息****');console.log('obj:',JSON.stringify(obj));console.log('obj2:',JSON.stringify(obj2));console.log('obj3:',JSON.stringify(obj3));console.log('obj4:',JSON.stringify(obj4));console.log('obj5:',JSON.stringify(obj5));console.log("......结束......");},100);/*打印日志结果:obj:{"info":{"name":"Sledgehammer"},"sign":"xxx"}obj2:{"info":{"name":"Sledgehammer"},"sign":"xxx"}obj3:{"info":{"name":"Sledgehammer"},"sign":"xxx"}obj4:{"info":{"name":"Sledgehammer"},"sign":"xxx"}obj5:{"info":{"name":"Sledgehammer"},"sign":"xxx"}…………结束……...****updateinfo****obj:{"info":{"name":"123"},"sign":"a**b"}//只复制一级属性obj2:{"info":{"name":"123"},"sign":"xxx"}//只复制一级属性obj3:{"info":{"name":"12三"},"sign":"xxx"}//只复制一级属性obj4:{"info":{"name":"Sledgehammer"},"sign":"xxx"}//所有层级深拷贝obj5:{“信息”:{“名称”:“大锤”},“标志”:“xxx"}//各级深拷贝*///2,测试数组的深拷贝setTimeout(function(){console.log('\n\n.....数组的深拷贝测试....');vararr=[{name:'小明'},true,18];vararr2=Object.assign([],arr);vararr3=[...arr2];vararr4=deepCloneObj(arr);vararr5=JSON.parse(JSON.stringify(arr));console.log('arr:',JSON.stringify(arr));console.log('arr2:',JSON.stringify(arr2));console.log('arr3:',JSON.stringify(arr3));console.log('arr4:',JSON.stringify(arr4));console.log('arr5:',JSON.stringify(arr5));console.log("...end...\n");setTimeout(function(){arr[0].name='567',arr[1]=false,arr[2]=99;console.log('arr:',JSON.stringify(arr));console.log('arr2:',JSON.stringify(arr2));console.log('arr3:',JSON.stringify(arr3));console.log('arr4:',JSON.stringify(arr4));console.log('arr5:',JSON.stringify(arr5));},100);/*arraytestprintLogresult:.....数组深拷贝测试....arr:[{"name":"Xiaoming"},true,18]arr2:[{"name":"小明"},true,18]arr3:[{"name":"小明"},true,18]arr4:[{"name":"小明"},true,18]arr5:[{"name":"小明"},true,18]......结束......arr:[{"name":"567"},false,99]arr2:[{"name":"567"},true,18]//只复制第一层属性arr3:[{"name":"567"},true,18]//只复制第一层-level属性arr4:[{"name":"Xiaoming"},true,18]//各级深拷贝arr5:[{"name":"Xiaoming"},true,18]//各级深拷贝*/},1000);
