zoukankan      html  css  js  c++  java
  • js深拷贝和浅拷贝

    浅拷贝:
      在有指针的情况下,浅拷贝只是增加一个指针,指向已经存在的内存。

    深拷贝:

      增加一个指针并且申请一个新内存,使这个增加的指针指向新的内存。


      采用深拷贝,释放内存时就不会出现在浅拷贝时重复释放同一个内存的错误。


    实例:

    //被改变 - 引用类型是对象
    var arr=[1,2,3,4,5]
    var arr1=arr;
    console.log(arr)
    arr1[1]=6; //原arr已被改变
    console.log(arr) //原arr已被改变
    //没有被改变 - 使用一些方法完全复制
    //利用 arr.slice(0) 或 arr.concat() 完整创建一个新数组
    var arr=[1,2,3,4,5]
    var arr1=arr.slice(0);
    console.log(arr)
    arr1[1]=6; //原arr没有改变
    console.log(arr) //原arr没有改变
    //没有被改变- 数据类型是值还不是对象的时候
    //引用数据类型是直接是一个值的情况下没有浅拷贝和深拷贝之分
    //但是对象有
    //非对象的变量和内存直接放在同一内存中,没有指针一说
    var arr=1;
    var arr1=arr;
    arr1=10;
    console.log(arr); //1 没有被改变,因为引用数组类型是值
  • 相关阅读:
    TuShare接口适应
    任泽平金句记录
    分红送股---要注意的两个日期
    解决github无法登录的问题
    持久斗争
    正则语法
    JWT的结构
    付鹏的黄金分析框架
    vscode设置背景图片
    Ubuntu 16.04安装Nginx
  • 原文地址:https://www.cnblogs.com/daysme/p/6288799.html
Copyright © 2011-2022 走看看