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

  • 相关阅读:
    一些tips
    微信小程序之后端处理
    微信小程序之前端代码篇
    微信小程序踩坑之前端问题处理篇
    Vue组件封装之一键复制文本到剪贴板
    读别人的代码之bug的发现
    解析webpack插件html-webpack-plugin
    数组去重方法整理
    如何理解EventLoop--浏览器篇
    axios和vue-axios的关系
  • 原文地址:https://www.cnblogs.com/Mrrabbit/p/9392254.html
Copyright © 2011-2022 走看看