当前位置: 首页 > news >正文

边境网站建设方案官网steam

边境网站建设方案,官网steam,手机网站制作移动高端网站建设,物流网站建设策划书在 JavaScript 中,深拷贝(Deep Copy) 和 浅拷贝(Shallow Copy) 是两种不同的对象复制方式,它们的区别主要体现在对嵌套对象的处理上。以下是它们的详细对比及使用场景: 1. 浅拷贝(Sh…

在 JavaScript 中,深拷贝(Deep Copy) 和 浅拷贝(Shallow Copy) 是两种不同的对象复制方式,它们的区别主要体现在对嵌套对象的处理上。以下是它们的详细对比及使用场景:


1. 浅拷贝(Shallow Copy)

  • 定义:

    • 浅拷贝只复制对象的第一层属性,如果属性是基本类型(如 stringnumberboolean),则直接复制值;如果属性是引用类型(如 objectarray),则复制引用(内存地址)。

    • 浅拷贝后的对象和原对象共享嵌套的引用类型数据。

  • 实现方式:

    • 使用 Object.assign():

      const obj = { a: 1, b: { c: 2 } };
      const shallowCopy = Object.assign({}, obj);
    • 使用扩展运算符(...):

      const obj = { a: 1, b: { c: 2 } };
      const shallowCopy = { ...obj };
  • 特点:

    • 修改浅拷贝对象的第一层属性不会影响原对象。

    • 修改浅拷贝对象的嵌套对象属性会影响原对象。

  • 示例:

    const obj = { a: 1, b: { c: 2 } };
    const shallowCopy = { ...obj };shallowCopy.a = 10; // 修改第一层属性
    shallowCopy.b.c = 20; // 修改嵌套对象属性console.log(obj); // { a: 1, b: { c: 20 } } (嵌套对象被修改)
    console.log(shallowCopy); // { a: 10, b: { c: 20 } }

2. 深拷贝(Deep Copy)

  • 定义:

    • 深拷贝会递归复制对象的所有层级属性,包括嵌套的引用类型数据。

    • 深拷贝后的对象和原对象完全独立,互不影响。

  • 实现方式:

    • 使用 JSON.parse(JSON.stringify()):

      const obj = { a: 1, b: { c: 2 } };
      const deepCopy = JSON.parse(JSON.stringify(obj));
      • 注意:这种方法无法复制函数、undefinedSymbol 等特殊类型。

    • 使用递归函数或工具库(如 Lodash 的 _.cloneDeep):

      const _ = require('lodash');
      const obj = { a: 1, b: { c: 2 } };
      const deepCopy = _.cloneDeep(obj);
  • 特点:

    • 修改深拷贝对象的任何属性都不会影响原对象。

    • 深拷贝会完全复制对象的所有层级数据。

  • 示例:

    const obj = { a: 1, b: { c: 2 } };
    const deepCopy = JSON.parse(JSON.stringify(obj));deepCopy.a = 10; // 修改第一层属性
    deepCopy.b.c = 20; // 修改嵌套对象属性console.log(obj); // { a: 1, b: { c: 2 } } (原对象不受影响)
    console.log(deepCopy); // { a: 10, b: { c: 20 } }

3. 浅拷贝和深拷贝的区别

特性浅拷贝(Shallow Copy)深拷贝(Deep Copy)
复制层级只复制第一层属性递归复制所有层级属性
嵌套对象嵌套对象是引用(共享内存地址)嵌套对象是独立的(不共享内存地址)
性能性能较高性能较低(递归复制)
实现方式Object.assign()、扩展运算符JSON.parse(JSON.stringify())、递归函数、工具库
适用场景对象结构简单,无需复制嵌套对象对象结构复杂,需要完全独立的对象

4. 如何选择使用浅拷贝和深拷贝

  • 使用浅拷贝的场景:

    • 对象结构简单,没有嵌套对象或数组。

    • 只需要复制第一层属性,且不关心嵌套对象是否共享。

    • 性能要求较高,且不需要完全独立的对象。

  • 使用深拷贝的场景:

    • 对象结构复杂,包含嵌套对象或数组。

    • 需要完全独立的对象,修改拷贝对象不影响原对象。

    • 不关心性能开销,且需要完整的复制。


5. 总结

  • 浅拷贝:

    • 只复制第一层属性,嵌套对象是引用。

    • 适合简单对象或性能敏感的场景。

  • 深拷贝:

    • 递归复制所有层级属性,嵌套对象是独立的。

    • 适合复杂对象或需要完全独立的场景。

根据实际需求选择合适的拷贝方式,可以避免不必要的性能开销和潜在的错误。

http://www.dtcms.com/a/527661.html

相关文章:

  • 网站换空间要重新备案吗wordpress导航栏编辑
  • 网站建设规划书感受桂林出网站
  • 企业网站建设中有哪几个重要点网站开发用电脑配置
  • 肇庆企业免费建站网站开发员工资
  • 精品网站建设费用中国建设银行网站用户注册
  • 吴忠住房和城乡建设局网站移动端网站开发哪家好
  • 南京有哪些做网站的公司室内装饰设计人员
  • 无锡专业网站推广九一人才网赣州
  • 注册公司上什么网站wordpress安装数据库错误
  • 做电影网站如何赚钱自己做网站不想买空间 自己电脑可以做服务器吗?
  • 手机无货源网店怎么开徐州seo外包公司
  • 北京建站工作室学生个人网页优秀模板
  • 湖北硕丰建设有限公司网站ppt模板素材免费
  • 个人网站设计的参考文献东莞专业微网站建设价格低
  • 做网站的软件有些什么论坛申请网站备案前置审批
  • 网站策划书格式及范文1000字免费安卓开发课程
  • 微信如何做自己的网站wordpress 后台 logo
  • 网站空间怎么买怎样查网站有没有做CDN加速
  • 与网站建设相关的论文题目我爱我家租房房源信息网
  • 网站系统功能流程图建设工程业绩查询网站
  • 团购的网站扣佣金分录怎么做四川 优质高职建设网站
  • “网站建设:上海珍岛”it外包的优点不包括
  • 网站设计 色彩wordpress更新慢
  • 网站404页面在哪查看如何快速模仿一个网站
  • 昆明网站seo多少钱seo公司排名榜
  • 学校 网站 建设 目的网络营销外包平台
  • 网站建设海报设计seo关键词优化报价
  • 南昌做公司网站制作app步骤
  • 网站上的验证码怎么做百度联盟广告收益
  • wordpress消除东莞市网络优化推广服务机构