yunshangxie/tuniao-ui/libs/function/deepClone.js

29 lines
585 B
JavaScript
Raw Normal View History

2023-12-25 17:56:30 +08:00
/**
* 判断是否为数组
*
* @param {Object} arr
*/
function isArray(arr) {
return Object.prototype.toString.call(arr) === '[object Array]'
}
/**
* 深度复制数据
*
* @param {Object} obj
*/
function deepClone(obj) {
if ([null, undefined, NaN, false].includes(obj)) return obj
if (typeof obj !== 'object' && typeof obj !== 'function') {
return obj
}
var o = isArray(obj) ? [] : {}
for (let i in obj) {
if (obj.hasOwnProperty(i)) {
o[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i]
}
}
return o
}
export default deepClone