在JavaScript中,复制对象属性可以通过以下几种方法实现:
Object.assign()
方法:const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const obj3 = Object.assign({}, obj1, obj2);
console.log(obj3); // { a: 1, b: 2, c: 3, d: 4 }
...
:const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const obj3 = { ...obj1, ...obj2 };
console.log(obj3); // { a: 1, b: 2, c: 3, d: 4 }
for...in
循环:const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const obj3 = {};
for (let key in obj1) {
obj3[key] = obj1[key];
}
for (let key in obj2) {
obj3[key] = obj2[key];
}
console.log(obj3); // { a: 1, b: 2, c: 3, d: 4 }
Object.keys()
方法和Array.prototype.reduce()
方法:const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const obj3 = Object.keys(obj1).reduce((acc, key) => {
acc[key] = obj1[key];
return acc;
}, {});
Object.keys(obj2).reduce((acc, key) => {
acc[key] = obj2[key];
return acc;
}, obj3);
console.log(obj3); // { a: 1, b: 2, c: 3, d: 4 }
需要注意的是,以上方法都是浅复制,如果对象中包含嵌套对象,则需要使用深复制。可以使用第三方库,如lodash
的_.cloneDeep()
方法实现深复制。
领取专属 10元无门槛券
手把手带您无忧上云