js 深拷贝
Posted vant850
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 深拷贝相关的知识,希望对你有一定的参考价值。
对于深拷贝 一直使用的都是 JSON 和 lodash 的方法, 今天空下来自己手写个 深拷贝方法, 把想到的一些情况, 包括对 函数、Symbol、正则、日期对象 都做了处理。 基本上满足了了日常需求。代码如下:
// 深拷贝
function deepClone(arg)
let typeIncludes = ['string', 'boolean', 'number', 'undefined'] // 基础类型
let redundanceIncludes = ['null', 'symbol', 'function', 'regexp', 'date'] // 冗余类型
let typeObject = (obj) => Object.prototype.toString.call(obj).slice(8, -1).toLowerCase()
function dealArray(item)
let arr = item.map( i =>
return deepClone(i)
)
return arr
function dealObject(obj)
let newObj =
for (const key in obj)
newObj[key] = deepClone(obj[key])
return newObj
if(typeIncludes.includes(typeObject(arg)) || redundanceIncludes.includes(typeObject(arg)) ) return arg
return typeObject(arg) === 'array' ? dealArray(arg) : dealObject(arg)
有不足的地方, 还请评论区留言????
以上是关于js 深拷贝的主要内容,如果未能解决你的问题,请参考以下文章