js_Object.assign(对象的合并)
2021-01-17 11:15
标签:def 数据类型 复制 ade 报错 sig abc 形式 symbol 这里将数组视为了属性名为0,1,2的对象,所以发生了同名属性值的替换。 js_Object.assign(对象的合并) 标签:def 数据类型 复制 ade 报错 sig abc 形式 symbol 原文地址:https://www.cnblogs.com/Syinho/p/13365553.html
定义
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无法转换成对象,以它们作为参数会报错
其它类型数据作为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