Object.assign

今天撸代码看到大佬写的代码了有句‘ Object.assign(param,_param);’不明白什么意思,遂百度之:

Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

const object1 = {
  a: 1,
  b: 2,
  c: 3
};

const object2 = Object.assign({c: 4, d: 5}, object1);

console.log(object2.c, object2.d);
// 输出结果: 3 5

Object.assign()接口可以接收多个参数,第一个参数是目标对象,后面的都是源对象,assign方法将多个原对象的属性和方法都合并到了目标对象上面,如果在这个过程中出现同名的属性(方法),后合并的属性(方法)会覆盖之前的同名属性(方法)。

var target1  = {a : 1}; //目标对象
var source1 = {b : 2}; //源对象1
var source2 = {c : 3}; //源对象2
var source3 = {c : 4}; //源对象3,和source2中的对象有同名属性c
Object.assign(target1,source1,source2,source3);
const object2 = Object.assign({c: 4, d: 5}, target1);

console.log('object2====>',object2)
//输出结果: object2====> {c: 4, d: 5, a: 1, b: 2}

assign的设计目的是用于合并接口的,所以它接收的第一个参数(目标)应该是对象,如果不是对象的话,它会在内部转换成对象,所以如果碰到了null或者undefined这种不能转换成对象的值的话,assign就会报错。但是如果源对象的参数位置,接收到了无法转换为对象的参数的话,会忽略这个源对象参数。

const v1 = 'abc';
const v2 = true;
const v3 = 10;
		 
const obj = Object.assign({}, v1, v2, v3);
console.log('obj====>',obj)
//输出结果:{0: "a", 1: "b", 2: "c"}

查阅更多:传送门1传送门2

猜你喜欢

转载自blog.csdn.net/weixin_42659625/article/details/81094104