zoukankan      html  css  js  c++  java
  • ES6 的Object.assign(target, source_1, ..., source_n)方法与对象的扩展运算符

    一、基本概念

    Object.assign方法用来将源对象(source)的所有可枚举属性,复制到目标对象(target)。它至少需要两个对象作为参数,第一个参数是目标对象,后面的参数都是源对象。
    Object.assign(target, source_1, ..., source_n)

    二、基本用法

    let target = {a: 1};
    let object2 = {b: 2};
    let object3 = {c: 3};
    Object.assign(target,object2,object3);  
    // 第一个参数是目标对象,后面的参数是源对象
    target;  // {a: 1, b: 2, c: 3}

    需要注意的是,

    • 如果目标对象和源对象有同名属性,或者多个源对象有同名属性,则后面的属性会覆盖前面的属性。
    • 如果该函数只有一个参数,当参数为对象时,直接返回该对象;当参数不是对象时,会先将参数转为对象然后返回。在这里还有一点,null 和 undefined 不能转化为对象,所以会抛出TypeError错
    • assign 的属性拷贝是浅拷贝
    Object.assign(null);       // TypeError: Cannot convert undefined or null to object
    Object.assign(undefined);  // TypeError: Cannot convert undefined or null to object
    当参数不止一个时,null 和 undefined 不放第一个,即不为目标对象时,会跳过 null 和 undefined ,不报错
    Object.assign(1,undefined);  // Number {1}
    Object.assign({a: 1},null);  // {a: 1}
    Object.assign(undefined,{a: 1});  // TypeError: Cannot convert undefined or null to object

     三、扩展运算符

    对象的扩展运算符(...)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。由于数组是特殊的对象,所以对象的扩展运算符也可以用于数组。

    对象的扩展运算符等同于使用Object.assign()方法。

    let aClone = { ...a };
    // 等同于
    let aClone = Object.assign({}, a);
    var phoneInfo=
        {
           areaCode: '',
           phone: ''
        }
    var z =
        {
            ...phoneInfo,
            areaCode: "86"
        }
    //等同于
    var z = Object.assign({}, phoneInfo, { areaCode: 86 }) 
  • 相关阅读:
    Redis基础
    MySQL基础
    MySQL基础
    MySQL基础
    MySQL基础
    Hello 博客园
    Linux | 常用命令
    JVM | 性能调优
    JVM | 垃圾回收
    学习笔记 | 分布式技术
  • 原文地址:https://www.cnblogs.com/songForU/p/10591982.html
Copyright © 2011-2022 走看看