📜  克隆一个 JavaScript 对象 - Javascript (1)

📅  最后修改于: 2023-12-03 14:50:03.272000             🧑  作者: Mango

克隆一个 JavaScript 对象

在 JavaScript 中,对象是非常常见的数据类型。有时候,我们需要在代码中复制或克隆一个对象。本文将介绍一些不同的方法来实现这一目的。

1. Object.assign()

Object.assign() 方法可以将一个或多个源对象的属性复制到目标对象中。它的语法如下:

Object.assign(target, ...sources)

其中,第一个参数 target 是目标对象,后面的参数 sources 是源对象。该方法会将源对象的所有可枚举属性复制到目标对象中,如果有同名属性,后面的值会覆盖前面的值。

示例
const source = {name: 'Bob', age: 30};
const target = {};

Object.assign(target, source);

console.log(target); // {name: 'Bob', age: 30}

在这个示例中,我们将源对象 source 的属性复制到空目标对象 target 中。

2. 手动复制

另一种复制对象的方法是手动复制每个属性。这种方法可以通过循环和属性赋值来实现。示例:

const source = {name: 'Bob', age: 30};
const target = {};

for(let key in source) {
  target[key] = source[key];
}

console.log(target); // {name: 'Bob', age: 30}

这种方法会遍历源对象 source 的每个属性,然后将其分别复制到目标对象 target 中。

需要注意的是,这种方法只能复制属性的值,不会复制属性的方法。

3. 使用 JSON.parse() 和 JSON.stringify()

第三种复制对象的方法是使用 JSON.parse()JSON.stringify()。这种方法的原理是先将对象转换为 JSON 字符串,再将 JSON 字符串转换为新的对象。

示例:

const source = {name: 'Bob', age: 30};
const target = JSON.parse(JSON.stringify(source));

console.log(target); // {name: 'Bob', age: 30}

需要注意的是,使用这种方法时必须确保对象是可 JSON 化的。也就是说,对象中不能包含函数、循环引用等不可 JSON 化的成分。

总结

以上是三种常见的复制对象的方法。使用 Object.assign() 方法可以简单地复制对象的属性,手动复制可以更加灵活地处理属性的值,使用 JSON.parse()JSON.stringify() 可以在某些情况下实现深复制。根据不同的需求,可以选择适合自己的方法来实现对象的复制。