面试题答案
一键面试在JavaScript中,可以使用JSON.parse(JSON.stringify())
方法来实现深拷贝,从而达到对obj2
的操作不影响obj1
。
const obj1 = {a: {b: {c: [1, 2, 3]}}};
const obj2 = JSON.parse(JSON.stringify(obj1));
解释
JSON.stringify(obj1)
:这一步将obj1
对象转换为JSON字符串。在这个过程中,对象的结构和数据被序列化为一个字符串表示。它会递归地处理对象的所有层级,包括嵌套的对象和数组。JSON.parse()
:将第一步生成的JSON字符串解析回一个新的JavaScript对象。这个新对象与原对象obj1
具有相同的结构和数据,但它是一个全新的独立对象,在内存中有自己独立的地址空间。
因此,对obj2
进行任何操作,都不会影响到obj1
,因为它们是两个完全独立的对象。不过需要注意的是,JSON.parse(JSON.stringify())
这种方法有一些局限性,例如不能处理undefined
、函数、正则表达式等特殊类型的数据。如果对象中存在这些类型的数据,需要使用更复杂的深拷贝方法,比如使用递归手动实现深拷贝或者使用lodash
库的cloneDeep
方法。