JS实现对象只复制已存在的属性

北风几吹夏 / 2024-08-27 / 原文

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.keysforEach

通过现代 JavaScript 语法,使用 Object.keysforEach 进行属性复制。

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 项目。
  • 缺点: 不适用于深层嵌套对象的复制。