【web前端】用javascript实现对象的深复制

function deepClone(targetObject) {
    if (typeof targetObject !== 'object') return targetObject;
    
    if (targetObject === null) return null;
    if (targetObject instanceof Date) return new Date(targetObject);
    if (targetObject instanceof RegExp) return new RegExp(targetObject);
    
    let newObj = new targetObject.constructor();
    
    for(let key in targetObject) {
        newObj[key] = typeof targetObject[key] === 'object' ? deepClone(targetObject[key]) : targetObject[key];
    }
    return newObj;
}
复制代码

附件:javascript 判断各种数据类型

typeof 2      //输出   number
typeof null   //输出   object
typeof {}    //输出   object
typeof []    //输出   object
typeof (function(){})   //输出  function
typeof undefined        // 输出  undefined
typeof '222'                // 输出    string
typeof  true                  // 输出     boolean
复制代码

看到这里你肯定会问了:我怎么去区分对象,数组和null呢?

Object.prototype.toString.call

var   gettype=Object.prototype.toString
gettype.call('aaaa')        //输出      [object String]
gettype.call(2222)         //输出      [object Number]
gettype.call(true)          //输出      [object Boolean]
gettype.call(undefined)  //输出      [object Undefined]
gettype.call(null)                  //输出   [object Null]
gettype.call({})                   //输出   [object Object]
gettype.call([])                    //输出   [object Array]
gettype.call(function(){})     //输出   [object Function]
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值