• 关于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
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    数据库三级考试的随笔2.0
    数据库三级考试的随笔1.2
    数据库三级考试的随笔1.1
    数据库三级考试的随笔1.0
    陈贤文的第一次试水
    点分治总结
    Treap总结
    UML之二、建模元素(1)
    StarUML之九、starUML的一些特殊属性的说明
    UML之一、为什么需要UML?
  • 原文地址:https://www.cnblogs.com/upupRabbit/p/10149628.html
Copyright © 2020-2023  润新知