• 拷贝之Object.assign()


    Object.assign(target,obj1,obj2,....)

    1、第一个是目标对象,后面的参数分别的源对象1,源对象2。。。

    2、多个源数据的时候,拷贝字符串类型,不拷贝数值类型和布尔类型。  原因:原始值在包装对象的内部,[[primitiveValue]]上面,Object.assign()不会拷贝这个属性。

    3、Object.assign()只会拷贝对象本身的属性,不会拷贝继承的,也不拷贝枚举的。

    4、对象的时候,第一级深拷贝,第二级,乃至后边的进行浅拷贝。

    5、多个对象进行合并的时候,会进行一个覆盖的操纵。

     1 <!DOCTYPE html>
     2 <html lang="en">
     3   <head>
     4     <meta charset="UTF-8" />
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     6     <title>Object.assign</title>
     7   </head>
     8   <body></body>
     9   <script>
    10     // Object.assign
    11     const obj1 = {
    12       hostname: "redis-ins-negchbsdok-redis-node-1-2",
    13       value: "8个",
    14       title: "集群数据节点数",
    15     };
    16     const obj2 = {
    17       hostname: "es-ins-negchbsdok-redis-node-1-2",
    18       value: "24GB",
    19       title: "集群磁盘使用量",
    20       name: "未命名",
    21     };
    22     const target = {
    23       title: "目标对象的title",
    24     };
    25 
    26     Object.assign(target, obj2, obj1);
    27     console.log(target); //hostname: "redis-ins-negchbsdok-redis-node-1-2",name: "未命名",title: "集群数据节点数",value: "8个"
    28     // console.log(Object.assign(undefined)); //报错
    29     // console.log(Object.assign(null));    //报错
    30 
    31     console.log(Object.assign(obj1));
    32     console.log(Object.assign(23));
    33 
    34     const obj3 = "abe";
    35     const num1 = 123;
    36     const bool = false;
    37     console.log(Object.assign({}, num1, bool, obj3)); //    0: "a",1: "b",2: "e"
    38 
    39     console.log("-----------------------------------------");
    40 
    41     console.log(Object(false));
    42     console.log(Object(123));
    43     console.log(Object("abc"));
    44 
    45     console.log("----------------------------------------------");
    46 
    47     const obj4 = {
    48       name: "云主机",
    49       hostname: {
    50         name: "二级对象",
    51       },
    52     };
    53     const obj5 = {};
    54     console.log(Object.assign(obj5, obj4)); //   后面全都是hostname:改变了二级对象
    55     console.log(obj4);
    56     obj4.age = "年龄";
    57     obj4.hostname.name = "改变了二级对象";
    58     console.log(obj4);
    59     console.log(obj5);
    60   </script>
    61 </html>
  • 相关阅读:
    mybatis专题(一)-----入门、配置
    如何在抽象类中注入bean
    spring是如何解决循环依赖的?
    Java 程序员必须了解的计算机底层知识!
    数据库底层到底是怎么设计的?
    关于Rigidbody,Collider和CharacterController三者之间的关系和用法的总结
    泛型c#(深入理解c#)
    协程的NullReferenceException 错误
    进度条的制作unity
    Rigidbody.Is Kinematic和碰撞体
  • 原文地址:https://www.cnblogs.com/qianqiang0703/p/14231429.html
Copyright © 2020-2023  润新知