首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

写个JS深拷贝,面试备用

for in先写个简单版本,因为这个也可以实现深拷贝,所以直接动手吧,let A = [1,2,3,[4,5]]let B = []for (var i in A){ B[i] = A[i]}B[...json字符串),然后在通过parse实现反序列(还原)js对象,序列化的作用是存储和传输,在这个过程中就会开启新的内存空间就会产生和源对象不一样的空间从而实现深拷贝,实际开发中这个用法已经可以解决很多场景了...Undefined,function等等很多的类型,所以接下来我们将其完善,加上所以判断,由于类型比较多,我们可以把对象的判断单独抽离出来,接下来一起完善它吧:在这之前我们还需要考虑的一个点就是 关于js...}var a = {}a.a = avar b = deepClone(a)console.log(b)这样就可以初步解决循环调用问题,接下来要考虑的是如何为更多类型做不同处理,我们借用之前的一个检测js...类型的文章,通过js检测数据类型 的这个方法来为多种类型分别处理。

80330
您找到你想要的搜索结果了吗?
是的
没有找到

写个JS深拷贝,面试备用_2023-03-13

for in 先写个简单版本,因为这个也可以实现深拷贝,所以直接动手吧, let A = [1,2,3,[4,5]] let B = [] for (var i in A){ B[i] = A[...Undefined,function等等很多的类型,所以接下来我们将其完善,加上所以判断,由于类型比较多,我们可以把对象的判断单独抽离出来,接下来一起完善它吧:在这之前我们还需要考虑的一个点就是 关于js...(A,B) /** RangeError: Maximum call stack size exceeded */ 会出现一个超出了最大调用堆栈大小的错误,这也是深拷贝中的一个坑,在这里我们可以通过js...a = {} a.a = a var b = deepClone(a) console.log(b) 这样就可以初步解决循环调用问题,接下来要考虑的是如何为更多类型做不同处理,我们借用之前的一个检测js...类型的文章,通过js检测数据类型 的这个方法来为多种类型分别处理。

97230
领券