function deepCopy(params) {
if (params && typeof params === 'object') {
if (typeof params === 'function') {
let tempFunc = params.bind(null)
tempFunc.prototype = params.prototype
return tempFunc
}
switch (Object.prototype.toString.call(params)) {
case "[object String]":
return params.toString()
case "[object Number]":
return Number(params.toString());
case "[object Boolean]":
return new Boolean(params.toString());
case "[object Date]":
return new Date(params.getTime())
case "[object RegExp]":
return new RegExp(params);
case "[object Array]":
let tempArr = []
params.forEach(item => {
tempArr.push(deepCopy(item))
})
return tempArr;
case "[object Object]":
let tempObj = {}
for (let key in params) {
tempObj[key] = deepCopy(params[key])
}
return tempObj
}
} else {
return params
}
}
const obj = {
a: 1,
b: function () { },
c: ['1'],
d: {
d1: function () {
console.log('d1');
}
},
f: /^[GCDZTSPKXLY1-9]\d{1,4}$/,
g: {
g1: {
g11: 'g11'
},
g2: 2,
g3: false
}
}
console.log(deepCopy(obj));
记录深拷贝方法
于 2022-07-18 09:55:00 首次发布