天马行空、脚踏实地~
最近学到的深拷贝的简单写法:
function deepClone(obj){ // typeof null的结果是object,所以单独拿出来 if(obj == null ){ console.log('请传入对象类型的数据') return; }; //如果不是object类型直接返回 if( typeof obj !== 'object'){ return obj; } // 这里要注意一下 ,生成一个空newobj let newObj = new obj.constructor(); for(let key in obj){ newObj[key] = deepClone(obj[key]); } return newObj; } var a = {name: '张三'}; let c = [1,2,4]; var a1 = deepClone(a); var c1 = deepClone(c); console.log('a',a); // {name: '张三'}; console.log('c',c); //[1,2,4] console.log('c1',c1); //[1,2,4] a.name= '李四' c[0] = 0; console.log('a',a); // {name: '李四'}; console.log('c',c); //[0,2,4] console.log('c1',c1); // 还应该是[1,2,4] var d = {name:'张三',detail:{age: 14}} var d1 = deepClone(d); console.log('d',d); // {name:'张三',detail:{age: 14}} console.log('d1',d1); //{name:'张三',detail:{age: 14}} d.detail.age = 15 console.log('d',d); // {name:'张三',detail:{age: 15}} console.log('d1',d1); //{name:'张三',detail:{age: 14}}
本文分享自微信公众号 - 女程序员的日常(gh_df41d619fb70),作者:凛
原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。
原始发表时间:2020-11-04
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句