判断数据类型
const getObjectType = obj => {
let toString = Object.prototype.toString;
let map = {
'[object Boolean]': 'boolean',
'[object Number]': 'number',
'[object String]': 'string',
'[object Function]': 'function',
'[object Array]': 'array',
'[object Date]': 'date',
'[object RegExp]': 'regExp',
'[object Undefined]': 'undefined',
'[object Null]': 'null',
'[object Object]': 'object'
}
if (obj instanceof Element) {
return "element"
}
return map[toString.call(obj)]
}
实现深拷贝
const deepClone = data => {
let type = getObjectType(data);
let obj;
if (type === "array") {
obj = []
for(let i = 0, len = data.length; i < len; i++){
obj.push(deepClone(data[i]))
}
} else if (type === "object") {
obj = {}
for (let key in data) {
obj[key] = deepClone(data[key])
}
} else {
return data
}
return obj;
}
以上代码,亲测可用,如有疑问,随时评论……