• 关于JS的assign() 方法


    先看这样一个示例:

     
    JS示例

    输出的结果是这样的:

     
    输出

    结果是我的obj的name对象被覆盖。


    如何解决呢?

    这里查到了一个assign()的方法。
    关于assign()方法,MDN上是这样解释的:Object.assign() 方法用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
    于是我们用assign()方法改写一下代码:

     
    改写代码

    执行结果是这样的:

     
    改写完的输出

    这样我们的obj对象的属性就不会被覆盖啦~~


    注意事项:

    在属性拷贝过程中可能会产生异常,比如目标对象的某个只读属性和源对象的某个属性同名,这时该方法会抛出一个 TypeError 异常,拷贝过程中断,已经拷贝成功的属性不会受到影响,还未拷贝的属性将不会再被拷贝。
    注意, Object.assign 会跳过那些值为 null 或 undefined 的源对象。
    Object.assign() 拷贝的是属性值。假如源对象的属性值是一个指向对象的引用,它也只拷贝那个引用值。

    它无法实现深层复制

    比如:

     
    深层复制

    输出结果:

     
    结果

    虽然进行了复制,但是它只能实现浅层复制,e的指向和f的指向没有发生改变。



    作者:7天苹果
    链接:https://www.jianshu.com/p/fd3f8a45d5fd
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    数据结构——自学笔记一
    Xmind软件——xmind 8 pro下载激活推荐!!
    Java学习笔记之面向对象、static关键字
    解决“var/log/sysstat/sa21: 没有那个文件或目录 请检查是否允许数据收集”
    c++.net学习笔记
    Android Studio学习-连接真机测试教学
    Servlet总结二(文件路径)
    Servlet总结一
    多线程的使用
    Lock
  • 原文地址:https://www.cnblogs.com/upupRabbit/p/10149628.html
Copyright © 2020-2023  润新知