js深拷贝

dsysama

关注

阅读 64

2022-03-16

function dc(o){
	if(o && typeof o === 'object'){//如果是对象类型
		let newo=Array.isArray(o)?[]:{} //初始化为数组或者对象
		for(k in o){ //循环拷贝
			if(o.hasOwnProperty(o[k])){ //只要自身属性,继承的不要
				if(o[k] && typeof o[k] === 'object'){ //如果此项是对象,继续深拷贝此项
					newo[k]=dc(o[k])
				}else newo[k]=o[k] //此项是基本数据类型,直接拷贝
			}
		}return newo
	}
    else return o //基本数据类型,直接返回
}

精彩评论(0)

0 0 举报