深拷贝对象2

深拷贝对象

deepClone(obj) {
	// 判断是否为对象
	if (obj === null) return null;
	if (typeof obj !== 'object') return obj;
	
	// 判断是否为Date类型
	if (obj instanceof Date) {
		let date = new Date();
		date.setTime(obj.getTime());
		return date;
	}

	let cloneObj = new obj.constructor();
	for (let key in obj) {
		// 判断一个属性定义在对象本身而不是继承原型链的方法
		if (obj.hasOwnProperty(key)) {
		  	cloneObj[key] = deepClone(obj[key]);
		}
	}
	return cloneObj;
}

使用

let tmpObj = {name: '小王商铺', num: 16, list: [{goodsName: '茄子', price: 350}, {goodsName: '青瓜', price: 100}]}
console.log('clone obj:', deepClone(objs));

let tmpDate = {time: new Date('2022-09-08')}
console.log('clone date:', deepClone(date)) // {time: Thu Sep 08 2022 08:00:00 GMT+0800 (中国标准时间)}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值