在 JavaScript 中深度克隆对象的最有效方法是什么?

javascriptobject oriented programmingprogramming

在 JavaScript 中,对象是键值对的集合。对象的属性是键,用字符串表示。键的值是给定对象的属性的值。在 JavaScript 中,对象可以通过多种方式复制到其他对象,下面将讨论其中一些方法。

  • 使用扩展运算符 (…),

  • 使用assign() 函数和

  • 使用 JSON.parse() 和 JSON.stringify() 函数。

使用 Json.parse() 和 Stingify() 方法

在上述三种方法中,对于要深度克隆的对象,使用 JSON.stringify() 和 JSON.parse() 函数

  • parse() 方法接受 JSON 字符串作为参数并相应地创建 JavaScript 对象。

  • stringify() 方法将 JavaScript 对象的值转换为 JSON字符串。

使用这两种方法,您可以快速轻松地将原始对象复制到新对象中。当给定的输入是数字、字符串和对象文字时,可以使用 Parse 进行复制。parse() 函数将字符串解析为 JavaScript 对象,通过这样做,两个对象将拥有各自的内存。

语法

解析函数的语法如下。

JSON.parse(JSON.stringify(originalObjectName))

示例 1

此示例为 parse() 方法。和 stringify() 复制对象 −

let employee = { emp_name: 'Abdul Rawoof', company: 'Tutorials Point', emp_id: 'TP10000', role: 'Software Engineer-Intern', salary: 18000 } let cpyEmployee = JSON.parse(JSON.stringify(employee)) console.log("This is the original object:",employee) console.log("This is the new copied object:",cpyEmployee) cpyEmployee.emp_name = 'B Jason' cpyEmployee.emp_id = 'TP9999' cpyEmployee.role = 'Content Writing-Intern' console.log("The copied object with updations is:",cpyEmployee)

示例 2

以下是使用 parse() 和 stringify() 方法克隆对象的另一个示例 -

let obj = { foo: 1, bar: { baz: 'test' } } let newObj = JSON.parse(JSON.stringify(obj)); obj.bar.baz = 20; console.log(obj); console.log(newObj);

Object.assign() 方法

OBJECT.assign() 函数用于将原始对象复制到新对象中。此方法与扩展运算符的区别在于,当存在嵌套对象时,如果使用assign()复制对象,则嵌套对象不会改变,但对象的其他变量可以改变。

示例

此示例演示了如何使用assign()在JavaScript中合并对象。

var empDetails = { emp_name: "Abdul Rawoof", emp_sex: "M", emp_age: 23 } var empCompany = { emp_id: "TP1000", emp_role: "Software Engineer-Intern", emp_salary: 18000 } console.log("The employee details object is:", empDetails) console.log("The employee company object is:",empCompany) var mergeObj = Object.assign({},empDetails,empCompany) console.log("The merged object is",mergeObj)

相关文章