首页IT科技js中的深浅拷贝(js中对象数据类型的深拷贝方法(5种))

js中的深浅拷贝(js中对象数据类型的深拷贝方法(5种))

时间2025-09-19 09:03:26分类IT科技浏览6646
导读:目录...

目录

一                 、使用JSON暴力转换

二                         、 使用拓展运算符+解构赋值

三        、 使用对象的合并                 ,即通过Object.assign()方法

四            、通过遍历对象

五                         、利用循环递归

一            、使用JSON暴力转换

        通过JSON.stringify() 和 JSON.parse() 将对象转为字符串之后在转为对象                。

var obj = {name:123}; var obj2 = JSON.parse(JSON.stringify(obj))

二        、 使用拓展运算符+解构赋值

        该方法的局限性在于                         ,当值为undefined                         、function                、symbol会在转换过程中被忽略                         。

var obj = {name:123,age:13}; var obj2 = {...obj}

三    、 使用对象的合并        ,即通过Object.assign()方法

        注意:该方法的第一个参数必须是空对象

var obj = {name:123,age:13}; var obj2 = Object.assign({},obj);

四                         、通过遍历对象

var obj1 = {name:"123"}; var obj2 = {}; for(x in obj1) { obj2[x] = obj1[x]; }

五                    、利用循环递归

        以上四种方法只能进行一层拷贝            ,即当对象的属性值也是对象时                         ,就无法实现该属性的深拷贝            ,在这里提供一种利用循环递归进行深拷贝的方法         。

var obj = { name: "123", sex: { age: "小花" } }; var newObj = {}; function deepClone(obj, newObj) { var newObj = newObj || {}; for (let key in obj) { if (typeof obj[key] == object) { newObj[key] = (obj[key].constructor === Array) ? [] : {} deepClone(obj[key], newObj[key]); } else { newObj[key] = obj[key] } } return newObj; } console.log(deepClone(obj, newObj));//{name: "123",sex: {age: 小花}}

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
word2010单页改变纸张方向(Word中更改单页纸的页面方向)