|
|
@@ -21,3 +21,46 @@ export function objectToParams (objs) {
|
|
|
}
|
|
|
return query.join('&')
|
|
|
}
|
|
|
+
|
|
|
+export const getObjType = obj => {
|
|
|
+ const toString = Object.prototype.toString
|
|
|
+ const 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)]
|
|
|
+}
|
|
|
+
|
|
|
+export const deepClone = data => {
|
|
|
+ const type = getObjType(data)
|
|
|
+ let obj
|
|
|
+ if (type === 'array') {
|
|
|
+ obj = []
|
|
|
+ } else if (type === 'object') {
|
|
|
+ obj = {}
|
|
|
+ } else {
|
|
|
+ // 不再具有下一层次
|
|
|
+ return data
|
|
|
+ }
|
|
|
+ if (type === 'array') {
|
|
|
+ for (let i = 0, len = data.length; i < len; i++) {
|
|
|
+ obj.push(deepClone(data[i]))
|
|
|
+ }
|
|
|
+ } else if (type === 'object') {
|
|
|
+ for (const key in data) {
|
|
|
+ obj[key] = deepClone(data[key])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return obj
|
|
|
+}
|