整理下初学时做过的js基础编程题目和大家分享以下,如果大家觉得有用,别忘了点一下赞哦
对象的深拷贝
完成一个对象的深度克隆方法
function deepClone(obj){
if(obj === null || typeof obj !== "object")return obj
if(obj instanceof RegExp)return new RegExp(obj)
if(obj instanceof Date)return new Date(obj)
let cloneObj = new obj.constructor()
for(let key in obj){
if(!obj.hasOwnProperty(key))break
cloneObj[key] = deepClone(obj[key])
}
return cloneObj
}
这里还有一种写法,就是对象只考虑数组和一般对象
function deepClone(obj,cloneObj = {}){
for(let key in obj){
if(!obj.hasOwnProperty(key))break
if(obj[key] !== null && typeof obj[key] === "object"){
cloneObj[key] = {}.toString.call(obj[key]) === '[object Array]' ? []:{}
deepClone(obj[key],cloneObj[key])
}else{
cloneObj[key] = obj[key]
}
}
return cloneObj
}
还有一种是 利用JSON数据格式,也是对象只考虑数组和一般对象
function deepClone(obj){
return JSON.parse(JSON.stringify(obj))
}