You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
585 B
29 lines
585 B
/**
|
|
* 判断是否为数组
|
|
*
|
|
* @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
|