首页 > Web开发 > 详细

js_Object.assign(对象的合并)

时间:2020-07-23 16:10:21      阅读:76      评论:0      收藏:0      [点我收藏+]

定义

object.assign用于对象的合并,将源对象(source)的所有可枚举属性复制到目标对象(target)中

        let targetObj = {
            a: 1
        };
        let sourceObj1 = {
            b: 2
        };
        let sourceObj2 = {
            c: 3
        };
        Object.assign(targetObj, sourceObj1, sourceObj2);

        console.log(targetObj); //a: 1 b: 2 c: 3

同名属性会相互覆盖,源对象后传入的会覆盖先传入的同名属性

        let targetObj = {
            a: 1
        };
        let sourceObj1 = {
            a: 2
        };
        let sourceObj2 = {
            a: 3
        };
        Object.assign(targetObj, sourceObj1, sourceObj2);

        console.log(targetObj); //a: 3

接收非对象作为参数时,进行对象转换

console.log(typeof Object.assign(2));//object

undefined与null无法转换成对象,以它们作为参数会报错

  • 将这两种数据类型作为target会报错,但是作为source不会报错

其它类型数据作为source,除了字符串会以数组形式传入,其它数据均无效果

        let v1 = ‘abc‘;
        let v2 = 25;
        let v3 = true;
        let newObj = Object.assign({}, v1, v2, v3);
        console.log(newObj); //0: "a" 1: "b" 2: "c"

属性名为Symbol值得属性也同样会被拷贝

Object.assign执行的是浅拷贝

对数组的处理

        var arr1 = [1, 2, 3];
        var arr2 = [4, 5];
        Object.assign(arr1, arr2);
        console.log(arr1); //0:4 1:5 2:3

这里将数组视为了属性名为0,1,2的对象,所以发生了同名属性值的替换。

js_Object.assign(对象的合并)

原文:https://www.cnblogs.com/Syinho/p/13365553.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!