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

    1. 基本类型 和 对象类型

      他们最大的区别就是在于他们的传值方式。 基本类型是传值 对象类型就是传引用。

      

      这里复制一份obj叫做obj2, 这里修改了obj2的b为100 同时也修改了obj1.b。 因为他们本来就是一个对象 这就是所谓的浅拷贝。

      避免这样的情况 我们这样写

      

      这就是深拷贝 不会改到原来的obj1。

      

      浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象

    2. Object.assign

      Object.assign是ES6 的新函数, 可以实现上面一样的功能。

      

      但是这个也不能完成深拷贝。因为只能完成第一层的拷贝。如果要完成深拷贝 可以使用jQuery的方法。

    3. jquery的深拷贝

      jquery有一个提供$.extend 可以使用Deep Copy。

      

  • 相关阅读:
    Linux route
    python 实现自定义切片类
    python 自省机制
    python 实例方法、静态方法、类方法
    python 动态语言和协议编程
    python 鸭子类型
    信息论
    CRF keras代码实现
    CRF 详细推导、验证实例
    attention 汇总(持续)
  • 原文地址:https://www.cnblogs.com/syomm/p/5903740.html
Copyright © 2011-2022 走看看