JS实现对象只复制已存在的属性
JavaScript 实现只复制已存在属性的笔记
在 JavaScript 中,如果需将一个对象的属性复制到另一个对象中,但只复制目标对象中已经存在的属性,可以使用以下几种方法:
1. 手动遍历属性
通过遍历 source
对象的属性,并判断 target
对象中是否存在对应属性,决定是否进行复制。
const source = { name: 'John', age: 30 };
const target = { name: 'Mike' };
for (let key in source) {
if (target.hasOwnProperty(key)) {
target[key] = source[key];
}
}
console.log(target); // 输出: { name: 'John' }
- 优点: 简单直接,控制权完全在开发者手中。
- 缺点: 代码较为冗长,不适合处理复杂逻辑。
2. 使用 Object.keys
和 forEach
通过现代 JavaScript 语法,使用 Object.keys
和 forEach
进行属性复制。
const source = { name: 'John', age: 30 };
const target = { name: 'Mike' };
Object.keys(target).forEach(key => {
if (source.hasOwnProperty(key)) {
target[key] = source[key];
}
});
console.log(target); // 输出: { name: 'John' }
- 优点: 语法简洁,适合现代 JavaScript 项目。
- 缺点: 不适用于深层嵌套对象的复制。