zoukankan      html  css  js  c++  java
  • 数组,对象的深拷贝 与 浅拷贝

    浅拷贝:Object.assign()
    
    let arr1 = [1,23,54]
    let arr2 = Object.assign(arr1)
    console.log(arr1 === arr2)  //result : true
    
    let obj1 = {a:1}
    let obj2 = Object.assign(obj1)
    console.log(obj1 === obj2) // result : true

    深拷贝 JSON.parse( JSON.stringify( ) )

    let arr1 = [1,54,62,7]
    let arr2 = JSON.parse(JSON.stringify(arr1))
    console.log(arr1 === arr2 ) //result :false
    
    let obj1 = {a:1}
    let obj2 = JSON.parse(JSON.stringify(obj1))
    console.log(obj1 === obj2) // result : false

    深拷贝 扩展运算符 (...)

    在使用扩展运算符 来进行深拷贝,需要注意的是  扩展运算符 只深拷贝 一维数组 和 对象  (意思就是里面不能套其他的数组或对象)

    let arr1 = [1,53,58,4]
    let arr2 = [...arr1]
    console.log(arr1 === arr2) // result : false
    
    let obj1 = {a:1,b:2}
    let obj2 = {...obj1}
    console.log(obj1 === obj2) //result : false

    下面 举例 不可深拷贝 的情况

    let arr1 = [1,53,5,[2,3]]
    let arr2 = [...arr1]
    console.log(arr1 === arr2) //result : false
    
    //但是这里 有一个情况存在
    console.log(arr1[3] === arr2[3]) // result : true
  • 相关阅读:
    RabbitMQ 集群与高可用配置
    ManifoldJS
    Top JavaScript Frameworks, Libraries & Tools and When to Use Them
    AngularJS 的安全Apply
    node js 常用模块
    微软发布了ASP.NET WebHooks预览版
    leaflet 了解
    messagepcak 资料
    fastBinaryJSON
    jQuery的图像裁剪插件Jcrop
  • 原文地址:https://www.cnblogs.com/TreeCTJ/p/11684415.html
Copyright © 2011-2022 走看看