js深拷贝

js深拷贝

深度克隆函数,用于创建给定值的深层副本。
支持基本数据类型(number, string, boolean, null, undefined)、Date对象、数组以及普通对象。
对于数组和对象,会递归地克隆其所有属性或元素,确保克隆的是深层次的独立副本。

/**  
 * 深度克隆函数,用于创建给定值的深层副本。  
 * 支持基本数据类型(number, string, boolean, null, undefined)、Date对象、数组以及普通对象。  
 * 对于数组和对象,会递归地克隆其所有属性或元素,确保克隆的是深层次的独立副本。  
 *  
 * @param {any} values 需要被深度克隆的值。  
 * @returns {any} 返回给定值的深层副本。  
 * @throws {Error} 如果传入值的类型不支持克隆,将抛出错误。  
 */  
function deepClone(values) {  
    var copy;  
    // 处理基本数据类型和null、undefined  
    if (null == values || 'object' != typeof values) return values;  
    // 处理Date对象  
    if (values instanceof Date) {  
      copy = new Date();  
      copy.setTime(values.getTime());  
      return copy;  
    }  
    // 处理数组  
    if (values instanceof Array) {  
      copy = [];  
      for (var i = 0, len = values.length; i < len; i++) {  
        copy[i] = deepClone(values[i]); // 注意:这里应使用函数名而非变量名  
      }  
      return copy;  
    }  
    // 处理普通对象  
    if (values instanceof Object) {  
      copy = {};  
      for (var attr in values) {  
        if (values.hasOwnProperty(attr)) copy[attr] = deepClone(values[attr]); // 同样,使用函数名  
      }  
      return copy;  
    }  
    throw new Error("Unable to copy values! Its type isn't supported.");  
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万水千山走遍TML

您的鼓励,将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值