js深拷贝和浅拷贝具体使用区别(js浅拷贝和深拷贝原理)

浅拷贝只复制对象的第一层,深拷贝会递归复制所有层级。使用场景不同,深拷贝需要更多性能开销。

JavaScript中深拷贝和浅拷贝的具体使用区别

成都创新互联公司专业为企业提供武乡网站建设、武乡做网站、武乡网站设计、武乡网站制作等企业网站建设、网页设计与制作、武乡企业网站模板建站服务,十余年武乡做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

浅拷贝(Shallow Copy)

1、原理:浅拷贝是创建一个新对象,将原对象的属性值逐一复制到新对象中,如果属性值是基本类型,那么直接复制值;如果属性值是引用类型,那么复制引用,原对象和新对象中的引用类型属性指向同一个内存地址。

2、使用场景:当需要对原对象进行修改时,不会影响到其他使用相同引用类型属性的对象。

3、示例代码:

function shallowCopy(obj) {
  let newObj = {};
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      newObj[key] = obj[key];
    }
  }
  return newObj;
}

深拷贝(Deep Copy)

1、原理:深拷贝是创建一个新对象,将原对象的属性值逐一复制到新对象中,与浅拷贝不同的是,深拷贝会递归地复制原对象的所有层级属性值,包括基本类型和引用类型,原对象和新对象中的引用类型属性指向不同的内存地址。

2、使用场景:当需要对原对象进行修改时,不会影响到其他使用相同引用类型属性的对象,当原对象包含嵌套的对象或数组时,深拷贝可以确保这些嵌套对象的独立性。

3、示例代码:

function deepCopy(obj) {
  if (typeof obj !== 'object' || obj === null) {
    return obj;
  }
  let newObj = Array.isArray(obj) ? [] : {};
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      newObj[key] = deepCopy(obj[key]);
    }
  }
  return newObj;
}

相关问题与解答

问题1:深拷贝和浅拷贝有什么区别?

答案:浅拷贝只复制原对象的引用类型属性的引用,而深拷贝会递归地复制原对象的所有层级属性值,包括基本类型和引用类型,深拷贝后的新对象与原对象互不影响。

问题2:如何实现一个深拷贝函数?

答案:可以使用递归的方法实现深拷贝函数,首先判断传入的对象是否为基本类型或null,如果是则直接返回;然后判断传入的对象是否为数组或普通对象,分别创建一个新的数组或普通对象;接着遍历原对象的属性,递归地调用深拷贝函数复制属性值;最后返回新的对象。

名称栏目:js深拷贝和浅拷贝具体使用区别(js浅拷贝和深拷贝原理)
转载来于:http://www.hantingmc.com/qtweb/news48/214948.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联