一、使用三点运算符…
特点:如果对象有相同的属性,后面的覆盖前面的
let obj1 = {
name: "nodejs",
age: 111,
email: "123@qq.com"
}
let obj2 = {
name: "js",
age: 222,
email: "node@qq.com"
}
let new_obj = { ...obj1, ...obj2 };
console.log(new_obj); //{ name: 'js', age: 222, email: 'node@qq.com' }
二、使用Object.assign()
特点:
(1)使用这个方法,只会改变第一个参数,也就是后面的合并到了第一个
(2)对象的属性如果有重合,后面的也会覆盖前面的
例子1:
let obj1 = {
name: "nodejs",
age: 111,
email: "123@qq.com"
}
let obj2 = {
name: "js",
age: 222,
email: "node@qq.com"
}
let ret1 = Object.assign({}, obj1, obj2);
//可以看到第一个是合并后的对象,有改变,重复属性,后面覆盖前面的
console.log(ret1); //{ name: 'js', age: 222, email: 'node@qq.com' }
console.log(obj1); //{ name: 'nodejs', age: 111, email: '123@qq.com' }
console.log(obj2); //{ name: 'js', age: 222, email: 'node@qq.com' }
例子2:
let obj1 = {
name: "nodejs",
age: 111,
email: "123@qq.com"
}
let obj2 = {
name: "js",
age: 222,
email: "node@qq.com"
}
let ret2 = Object.assign(obj1, obj2);
console.log(ret2); //{ name: 'js', age: 222, email: 'node@qq.com' }
//第一个参数改变了,第二个参数没变
console.log(obj1); //{ name: 'js', age: 222, email: 'node@qq.com' }
console.log(obj2); //{ name: 'js', age: 222, email: 'node@qq.com' }