• js数组复制(浅拷贝,深拷贝)


    数组的直接赋值属于数组的浅拷贝,JS存储对象都是存内存地址的,所以浅拷贝会导致新数组和旧数组共用同一块内存地址,其中一个数组变化,另一个数组也会相应的变化。
    数组内部不含有引用类型,使用slice() 、concat() 和 assign() 方法都属于数组的深拷贝,一个数组变化,另一个数组不受影响。
    数组内部含有引用类型,使用slice() 、concat() 和 assign() 方法,非引用类型的值属于深拷贝,引入类型的值属于浅拷贝,一个数组变化,另一个也会相应的变化。

    浅拷贝:

     深拷贝:

    方法一:通过JSON.stringify转化成字符串再通过JSON.parse()解析成原数组

    方法二:利用jQuery的$.extend方法。

    $.extend( [deep ], target, object1 [, objectN ] );

    deep表示是否深拷贝,为true为深拷贝,为false,则为浅拷贝
    target Object类型 目标对象,其他对象的成员属性将被附加到该对象上。
    object1 objectN可选。 Object类型 第一个以及第N个被合并的对象。

    var newArr = $.extend(true,[],arr)

  • 相关阅读:
    Win32的开发过程
    Win32的开发过程
    内存模式
    在DOS下生成一个可执行文件一般步骤
    内存模式
    内存模式
    静态链接
    在DOS下生成一个可执行文件一般步骤
    备忘录模式(存档模式)
    建造者模式
  • 原文地址:https://www.cnblogs.com/bing0709/p/16327027.html
Copyright © 2020-2023  润新知