JavaScript 实现自定义函数进行深度克隆
通常,克隆意味着将一个值复制到另一个值。在JavaScript中,有两种类型的克隆,即 深度克隆 和 浅克隆 。本文讨论深度克隆并了解深度克隆。
克隆是一个概念,可以在任何数据类型中发生,可以是原始数据类型(如字符串、数字)或复合数据类型(如数组和JavaScript对象)。
深度克隆: 深度克隆是一种技术,用于在JavaScript中克隆数组和对象时复制所有内容,以避免数据丢失。
示例1: 如下例所示,如果我们更改一个对象的值,那么其他对象也会反映这个变化,这是导致此问题的原因,为了避免这个问题,我们使用深度克隆。
Javascript
输出:
示例2: 如下示例所示,如果我们更改一个对象的值,则会导致数据损坏,其反映在其他对象中。
Javascript
输出:
方法: 现在我们将创建一个自己的自定义函数来深度克隆一个对象。
- 我们将创建一个名为 deepCopy 的函数,它将接受一个需要创建深拷贝的对象作为输入,并返回一个深度复制的对象。
- 我们将声明一个名为 result 的对象,它将存储最终的输出结果。
- 检查输入的对象是否是:
- null、undefined、数组、函数或不是对象类型(例如字符串、布尔值或数字)。如果是,则简单地返回输入。
- 如果输入的是对象类型,则使用 Object.keys 方法获取对象的键,并对每个键再次调用 deepCopy 函数。
- 返回 result 。
示例: 这个示例展示了上述方法的使用。
JavaScript
输出:
解释: 即使修改了 obj ,数据仍然安全地存储在 deepCopiedObject 和 deepCopiedObjectTwo 中,并且不发生变异。