// 判断n是否是对象
function isObject(n) {
return Object.prototype.toString.call(n).slice(8, -1) === 'Object'
}
// 判断n是否是数组
function isArray(n) {
return Object.prototype.toString.call(n).slice(8, -1) === 'Array'
}
// 对象属性的深拷贝
function cloneDeep(obj) {
if (!isObject(obj) && !isArray(obj)) {
return console.log('请传递对象参数')
}
let object = isArray(obj) ? [] : {}
// 获得对象的所有属性名称数组
let keys = Reflect.ownKeys(obj)
for (let key of keys) {
object[key] = isObject(obj[key]) || isArray(obj[key]) ? cloneDeep(obj[key]) : obj[key]
}
return object
}