首页 > 其他 > 详细

深拷贝

时间:2020-05-04 10:40:20      阅读:62      评论:0      收藏:0      [点我收藏+]

深拷贝: 

const isType = type => val => type === Object.prototype.toString.call(val).slice(8, -1)
const isArray = isType(‘Array‘)
const isObject = isType(‘Object‘)
function deepCopy (obj) {
    if(!(isArray(obj)|| isObject(obj))) { return obj }  // 数字、日期、正则、函数、字符串、undefined、null、Symbol直接返回
    const res = isArray(obj) ? [] : {}
    return Object.keys(obj).reduce((prev, item) => {
      prev[item] = (isArray(obj[item]) || isObject(obj[item])) ? deepCopy(obj[item]) : obj[item]
      return prev
    }, res)
}
  •  测试:
const obj1 = {
    name:‘Tom‘,
    age:20,
    school:{
        name: ‘XXX第一中学‘,
        createTime: new Date(‘1998/01/23‘)
    },
    family:[‘father‘, ‘mother‘, ‘Tom‘]
}
const obj2 = deepCopy(obj1)

 

深拷贝

原文:https://www.cnblogs.com/jxjl/p/12825280.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!