// 输入目标, 返回目标具体类型 /** * @param {any} target 要判断类型的目标对象 * @returns 返回相应类型 */ export const targetType = (target) => { let result = '' switch (Object.prototype.toString.call(target)) { case '[object Object]': result = 'Object' break case '[object Array]': result = 'Array' break case '[object String]': result = 'String' break case '[object Number]': result = 'Number' break case '[object Boolean]': result = 'Boolean' break case '[object Function]': result = 'Function' break case '[object Null]': result = 'Null' break case '[object Undefined]': result = 'Undefined' break } return result } // 检查目标是否有效( 空数组以及空对象被认为不合法 ) export const checkIsValid = (item) => { switch (typeof (item)) { case 'undefined': return false case 'null': return false case 'number': { if (isNaN(item)) { return false } else { return true } } case 'object': { for (let key in item) { return true } return false } } } // 驼峰与下划线写法相互转换 /** * @function 驼峰命名->下划线命名 * @param {string} name {驼峰名称} * @return {string} {下划线名称} */ export const toLineName = (name) => { return name && name.replace(/([A-Z])/g, '_$1').toLowerCase() } /** * @function 下划线命名->驼峰命名 * @param {string} name {下划线名称} * @return {string} {驼峰名称} */ export const toHumpName = (name) => { return name && name.replace(/_([a-zA-Z])/g, function (all, letter) { return letter.toUpperCase() }) } // 合并对象 /** * Mix properties into target object. */ export function extend (to, _from) { for (const key in _from) { to[key] = _from[key] } return to } // 类数组转为真数组 /** * Convert an Array-like object to a real Array. */ export function toArray (list, start) { start = start || 0 let i = list.length - start const ret = new Array(i) while (i--) { ret[i] = list[i + start] } return ret }