zoukankan      html  css  js  c++  java
  • js实现深拷贝的一些方法

    在ECMAScript变量中包含两种不同类型的值:基本类型值和引用类型值。

    基本类型值:Undefined、Null、Boolean、Number、String

    引用类型值:Object、Array、函数等

    基本类型一般就是浅拷贝,引用类型是深拷贝

    简单点来说,声明一个数组A、然后将其赋值给B、当修改B的值时,如果A的值没有变化,说明它是深拷贝,如果A的值一起改变了,那它就是浅拷贝了。

    但需要注意的是:引用类型,如果往深一点讲,也是分浅拷贝和深拷贝,比如数组,涉及二维三维数组。

    下面的方法,只是实现一维的深拷贝。

    实现一维数组深拷贝的一些方法:

    1.使用ES6的语法

    var a=[1,2,3]
    var [...b]=a;//或b=[...a]
    b.push(4);
    console.log(b);//1,2,3,4
    console.log(a)//1,2,3

    2.使用concat()方法

    var a=[1,2,3]
    var c=[];
    var b=c.concat(a);
    b.push(4);
    console.log(b);//1,2,3,4
    console.log(a)//1,2,3

    3.使用slice()方法

    var a=[1,2,3]
    var b=a.slice(0);
    b.push(4);
    console.log(b);//1,2,3,4
    console.log(a)//1,2,3

    4.使用JSON对象的stringify和parse方法

    var a=[1,2,3]
    var c=JSON.stringify(a);
    var b=JSON.parse(c);
    b.push(4);
    console.log(b);//1,2,3,4
    console.log(a)//1,2,3

    参考地址:

    https://www.cnblogs.com/echolun/p/7889848.html

    https://www.cnblogs.com/myzy/p/8561353.html

  • 相关阅读:
    本周工作量统计
    第15周个人作业
    16周第一组作业
    排球比赛积分规则
    典型用户和场景
    我和计算机
    第18周冲刺
    16周个人作业
    Java中动态获取项目根目录的绝对路径
    Spring框架下类的初始化顺序
  • 原文地址:https://www.cnblogs.com/Mrrabbit/p/9392254.html
Copyright © 2011-2022 走看看