js--深浅拷贝

讲在之前

  • 深浅拷贝只针对引用对象
  • 对于部分基本数据类型,如number、string、boolean等,采用字面量赋值,他们都是值复制,又因为他们只有值,故赋值的过程,其实就是创建了新的值,不过值相等罢了。
  • 提一嘴:为什么作为非引用类型,他们居然有方法用?因为number、string、boolean有原始包装类型,在使用方法时,会短暂的创建一个包装类型实例,使用完方法后就会销毁。因为是对象,我们没必要自己去创建一个对象只保存一个值,浪费堆内存。

浅拷贝

只复制一层

深拷贝

复制所有层


浅拷贝方法

  1. Object.assign( { }, obj1 );
  2. [ ].concat( nums )
  3. slice( )

注意:如果只想要对象本身的属性还是和for循环、hasOwnProperty一起使用。


深拷贝方法

未知深度:
  1. 递归

  2. JSON对象

//无法实现对象中方法的深拷贝
function deepClone2(obj) {
  let _obj = JSON.stringify(obj);
  return JSON.parse(_obj);
}
全部评论

相关推荐

10-15 20:01
已编辑
上海大学 Java
钉钉什么垃圾公司,约面鸽人
光年在眼前:不是坏事,感觉钉钉挺逆天的,二面结束还给我留作业,让我使用钉钉和看最新的发布会,然后说感受,我是应该不会去,三面直接拒绝不面了
点赞 评论 收藏
分享
10-14 21:00
门头沟学院 Java
吃花椒的狸猫:这个人说的倒是实话,特别是小公司,一个实习生哪里来的那么多要求
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务