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

网站建设企业站保定专业网站建设开发公司

网站建设企业站,保定专业网站建设开发公司,网站模板 在哪购买,建个平台需要多少资金一、什么是拷贝?什么是深拷贝和浅拷贝? (1)拷贝:拷贝就是为了复用原对象的部分or全部数据,在原对象的基础上通过复制的方式创建一个新的对象。 拷贝对象可以分为三种类型:直接赋值、浅拷贝和深拷…

一、什么是拷贝?什么是深拷贝和浅拷贝?

(1)拷贝:拷贝就是为了复用原对象的部分or全部数据,在原对象的基础上通过复制的方式创建一个新的对象。

拷贝对象可以分为三种类型:直接赋值、浅拷贝和深拷贝

 (2)直接赋值:并不会创建一个新的对象,而是将原对象的引用赋给新变量。因此,修改新变量会影响到原对象。

let obj1 = { name: "Alice", age: 25 };
let obj2 = obj1;obj2.age = 30;
console.log(obj1); // { name: "Alice", age: 30 }
console.log(obj2); // { name: "Alice", age: 30 }

(3)浅拷贝浅拷贝会创建一个新的对象,仅复制对象的第一层属性。如果是简单数据类型拷贝值,引用数据类型(eg:对象、数组)拷贝的是地址。 如果是单层对象,没问题,如果有多层就有问题,修改嵌套对象会影响原对象。

 

(4)深拷贝会创建一个新的对象,并且递归地拷贝所有嵌套对象,使得新对象与原对象完全独立。

        (深拷贝会开辟新的栈,两个对象对应两个不同的地址,修改对象A的属性,并不会影响到对象B。)

 

二、浅拷贝实现方法

        浅拷贝会创建一个新的对象,但新对象中的属性如果是对象,则这些属性仍然指向原对象中的对应属性。因此,修改嵌套对象会影响到原对象。

1、Object.assign() 

let obj1 = { name: "Alice", age: 25, address: { city: "New York" } };
let obj2 = Object.assign({}, obj1);obj2.age = 30;
obj2.address.city = "London";console.log(obj1); // { name: "Alice", age: 25, address: { city: "London" } }
console.log(obj2); // { name: "Alice", age: 30, address: { city: "London" } }

2、使用展开运算符(...)实现 

let obj1 = { name: "Alice", age: 25, address: { city: "New York" } };
let obj2 = { ...obj1 };obj2.age = 30;
obj2.address.city = "London";console.log(obj1); // { name: "Alice", age: 25, address: { city: "London" } }
console.log(obj2); // { name: "Alice", age: 30, address: { city: "London" } }

三、深拷贝实现方法

        深拷贝会创建一个新的对象,并且递归地拷贝所有嵌套对象,使得新对象与原对象完全独立。

1、通过递归实现深拷贝

如果一个函数在内部可以调用其本身,那么这个函数就是递归函数

2、使用 JSON.parse 和 JSON.stringify 实现 

let obj1 = { name: "Alice", age: 25, address: { city: "New York" } };
let obj2 = JSON.parse(JSON.stringify(obj1));obj2.age = 30;
obj2.address.city = "London";console.log(obj1); // { name: "Alice", age: 25, address: { city: "New York" } }
console.log(obj2); // { name: "Alice", age: 30, address: { city: "London" } }

3、js库lodash里面cloneDeep内部实现了深拷贝 

import _ from 'lodash';
let obj = { a: 1, b: [2, 3] };
let copy = _.cloneDeep(obj);

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

相关文章:

  • 备案不关闭网站江西省赣州市官网
  • 成都vr 网站开发wordpress 注册码插件
  • 一款国产开源免费的知识管理工具 - sward,超级轻量、简洁
  • flash上传空间网站做盗版电影网站
  • 做环保要知道的几个网站樱花代码html
  • 网站建设广州白云宁波建设网网点
  • 高端网站建设的方案亚马逊云服务器收费标准
  • 毕业设计怎么做网站网站网络营销怎么做
  • 网站设prozac
  • 免费扑克网站沈阳市建设工程安全监督站网站
  • 网站建设哪家最好洛阳网站建设培训
  • 上线了 建立网站烟台市网站建设
  • 模板下载免费抖音seo搜索优化
  • 简单大气的网站太原网站建设维护
  • Mysql索引失效的情况
  • 软件 行业门户网站网页版qq登陆入口
  • 做外贸一般上什么网站响应式布局设计
  • 微信公众号创建平台seo百度seo排名优化软件
  • 做创新方法工作的网站如何加强省市级门户网站的建设
  • 1、Order-Service 服务设计规范文档
  • 中信建设证券官方网站计算机类十大含金量证书
  • 多米诺网站建设服务代理网上注册公司
  • 第一次做网站做什么比较好做App和网站 聚马
  • OceanBase数据字典和性能视图
  • 厦门网站建设工作wordpress 下列主题不完整_没有主题样式表和模板.
  • 注册了网站怎么建设怎么看网站做的外链
  • 呼伦贝尔网站开发河北省和城乡建设厅网站
  • 分布式系统与云原生技术个人见解
  • 天津网站搜索排名制作小程序网站源码
  • 手机版网站模板如何做app网站