将两个对象混合为一个对象
Object.assign()
参数:可传入多参数,
返回值:为第一个参数 ,会改变第一个参数的值
假设有参数为两个对象,第二参数的对象会将值复制给第一个对象来实现对象混合,如果是三个对象的话,第三个对象会先跟第二个对象混合后在跟第一个对象混合, 如果想不改变源对象的值进行混合,就需要把第一个设置为空对象来接受后面的值,
对象混合,且不改变原对象的值
var obj1 = {
x: 1,
y: 3,
z: 5
};
var obj2 = {
x: "abc",
z: "bcd",
h: "aaa"
};
var obj = Object.assign({}, obj1, obj2);
自己实现
var o1 = {
x:1,
y:12,
zx:'asdf',
1:{
x:123,
},
2:[1,2,3]
}
var o2 = {
x:'asdf',
y:'sdgrrrrrrrr',
h:'hjkyuio',
ss:[1,2,3]
}
function objMixture(obj1,obj2){
var newObj = {};
// 把obj1中的属性复制到newObj
for (var prop in obj2) {
newObj[prop] = obj2[prop];
}
// 将obj1中有的但是obj2中没有的复制到newObj
for (var prop in obj1) {
if (!(prop in obj2)) {
newObj[prop] = obj1[prop];
}
}
return newObj;
}
var oo = objMixture(o1,o2)