前言

比较容易搞混的一个知识点


提示:以下是本篇文章正文内容,下面案例可供参考

一、赋值

  <script>var num = 123var person = { name: '乔丹' }// 赋值,不是浅拷贝// 浅拷贝必须要创建一个新的对象var person1 = personperson1.name = '科比'console.log(person.name); // 科比console.log(person1.name); // 科比</script>

二、浅拷贝

  <script>var num = 123var person = { name: '乔丹', hobby: ['ball', 'play'] }// 浅拷贝会创建一个新的对象 // 拷贝值(如果属性是一般数据类型 拷贝的就是基本类型的值,// 如果属性是引用数据类型,拷贝的就是内存的地址function shallowClone(source) {var newObj = {}for (var i in source) {// 拷贝的时候一般忽略掉继承的if (source.hasOwnProperty(i)) {newObj[i] = source[i]}}return newObj}var person1 = shallowClone(person)person1.name = '科比'person1.hobby[0] = 'apple'console.log(person.name); // 乔丹console.log(person1.name); // 科比console.log(person.hobby); // ['apple', 'play']console.log(person1.hobby); // ['apple', 'play']</script>

三、深拷贝

  <script>// 深拷贝,创建一个新对象,将对象从内存中完整的拷贝出来一份给该对象// 并从堆内存中开辟一个全新的空间存放新对象var person = { name: '乔丹', hobby: ['篮球', '棒球'] }function deepClone(source) {return JSON.parse(JSON.stringify(source))}var person1 = deepClone(person)person1.hobby[0] = '足球'console.log(person.hobby); // ['篮球', '棒球']console.log(person1.hobby); // ['足球', '棒球']console.log(person1 === person); // falseconsole.log(person1.hobby === person.hobby); // false</script>

总结

仅仅只是稍微了解了一下赋值、深浅拷贝的区别,具体详情请可以看(12条消息) JavaScript深拷贝看这篇就行了!(实现完美的ES6+版本)_码飞_CC的博客-CSDN博客

js赋值、浅拷贝、深拷贝的区别相关推荐

  1. Interview:算法岗位面试—10.11下午—上海某公司算法岗位(偏机器学习,互联网数字行业)技术面试考点之XGBoost的特点、python的可变不可变的数据类型、赋值浅拷贝深拷贝区别

    ML岗位面试:10.11下午-上海某公司算法岗位(偏机器学习,互联网数字行业)技术面试考点之XGBoost的特点.python的可变不可变的数据类型.赋值浅拷贝深拷贝区别 Interview:算法岗位 ...

  2. 一文搞懂JS中的赋值·浅拷贝·深拷贝

    前言 为什么写拷贝这篇文章?同事有一天提到了拷贝,他说赋值就是一种浅拷贝方式,另一个同事说赋值和浅拷贝并不相同.我也有些疑惑,于是我去MDN搜一下拷贝相关内容,发现并没有关于拷贝的实质概念,没有办法只 ...

  3. python3 赋值 浅拷贝 深拷贝 简介

    目录 一.赋值 二.浅拷贝(shallow copy) 三.深拷贝(deep copy) 四.关于拷贝操作的警告 一.赋值 在python中,对象的赋值就是简单的对象引用,这点和C++不同.如下: a ...

  4. python赋值浅拷贝和深拷贝的区别_python赋值、浅拷贝、深拷贝区别

    在写Python过程中,经常会遇到对象的拷贝,如果不理解浅拷贝和深拷贝的概念,你的代码就可能出现一些问题.所以,在这里按个人的理解谈谈它们之间的区别. 一.赋值(assignment) 在<Py ...

  5. 让你彻底理解浅拷贝和深拷贝的区别

    在写js的时候经常会遇到复制对象,在复制对象的过程中往往会出现新对象改变原对象等等的一些问题,今天特意梳理一下,希望能帮助到遇到这些问题的开发人员. 什么是浅拷贝,深拷贝以及和他们之间的区别 赋值 浅 ...

  6. js 浅拷贝直接赋值_js 深拷贝 vs 浅拷贝

    本文主要讲一下 js 的基本数据类型以及一些堆和栈的知识和什么是深拷贝.什么是浅拷贝.深拷贝与浅拷贝的区别,以及怎么进行深拷贝和怎么进行浅拷贝. 本文思维导图如下:本文思维导图 堆和栈的区别 其实深拷 ...

  7. 详细解析赋值、浅拷贝和深拷贝的区别

    详细解析赋值.浅拷贝和深拷贝的区别 一.赋值(Copy) 赋值是将某一数值或对象赋给某个变量的过程,分为下面 2 部分 基本数据类型:赋值,赋值之后两个变量互不影响 引用数据类型:赋址,两个变量具有相 ...

  8. Python 赋值、浅拷贝、深拷贝的区别?

    http://songlee24.github.io/2014/08/15/python-FAQ-02/ 在写Python过程中,经常会遇到对象的拷贝,如果不理解浅拷贝和深拷贝的概念,你的代码就可能出 ...

  9. python中赋值,深拷贝,浅拷贝区别

    这三种 的区别就是 复制的变量 是否是原变量的引用. 赋值:只是原变量的引用. 浅拷贝和深拷贝的区别 需要通过 子元素 区分 浅拷贝:子元素的 引用相同 深拷贝:所以引用都不相同,完全复制一份 这三种 ...

  10. js中的深拷贝和浅拷贝区别

    js中的深拷贝和浅拷贝与值传递和引用传递有着些许的关联,都是根据堆栈中数据的储存来传递数据. 下面主要说一下我对深拷贝和浅拷贝的理解: 简单举个例子来说明:当我们声明一个a变量并且赋值,并且让b等于a ...

最新文章

  1. oracle sqlstate 22023,DB2 开发常遇到一些错误
  2. 取得前九条之后的数据
  3. linux中offsetof与container_of宏定义
  4. 腾讯云【人脸识别】服务的一次尝试(JAVA)
  5. 基于python的FFT频率和振幅处理
  6. 使用UDP的简单C/S程序
  7. 如何删除写保护的文件_如何找回已删除或永久删除的Office Excel文件
  8. 三年白干!程序员因违反《竞业协议》赔偿腾讯97.6万元,返还15.8万元
  9. 有り様、状態、様子 の 区別
  10. 查找算法之五 分块查找(C++版本)
  11. mysql identity_insert_由MYSQL SET IDENTITY_INSERT tablename ON;准确方法
  12. Android拍照与相册选取图片
  13. atitit.gui界面纵向居中总结
  14. ARCGIS小工具(插件)免费版_自取_GIS插件_工具_其他
  15. Android-高德api使用常见错误
  16. 如何将windows桌面变成类似mac样式
  17. python re 中文_python处理中文编码
  18. 开源的高性能Java集合:GNU Trove介绍
  19. 西安交大计算机应用技术分数线,西安交大计算机的进一下
  20. 用IP地址签发SSL证书

热门文章

  1. python转json
  2. apple store链接格式文档
  3. 利用MS11_003 IE漏洞攻击Windows7主机-代号 永恒之蓝
  4. WebForm登录页面(连接数据库)
  5. tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
  6. V语言环境部署教程-linux
  7. 2014年用户最买账的五款手机应用
  8. Win10 Windows Hello 指纹识别找不到支持设备解决方案
  9. 如何招一个靠谱的前端
  10. uview——uniapp最优秀的UI框架