55 lines
1.1 KiB
TypeScript
55 lines
1.1 KiB
TypeScript
import { TypeTag } from '@/common/utils/index.ts'
|
|
import { isString } from '@/common/utils/types.ts'
|
|
|
|
|
|
/**
|
|
* 检查是否为普通对象
|
|
* @param obj 待检查对象
|
|
*/
|
|
export function isSimpleObject(obj: any) {
|
|
if (Object.prototype.toString.call(obj) !== TypeTag.OBJECT) {
|
|
return false
|
|
}
|
|
|
|
let firstProto = Object.getPrototypeOf(obj)
|
|
if (firstProto == null) {
|
|
return true
|
|
}
|
|
|
|
let proto = firstProto
|
|
let pt = null
|
|
while ((pt = Object.getPrototypeOf(proto)) != null) {
|
|
proto = pt
|
|
}
|
|
return firstProto === proto
|
|
}
|
|
|
|
/**
|
|
* 检查是否为类数组
|
|
* @param obj 待检查对象
|
|
*/
|
|
export function isArrayLike(obj: any) {
|
|
return obj != null &&
|
|
typeof obj !== 'function' &&
|
|
(typeof obj.length === 'number' &&
|
|
obj.length > -1 &&
|
|
obj.length % 1 === 0 &&
|
|
obj.length <= Number.MAX_SAFE_INTEGER)
|
|
}
|
|
|
|
/**
|
|
* 检查是否为纯数字字符串
|
|
* @param obj 待检查对象
|
|
*/
|
|
export function isNumStr(obj: any) {
|
|
return isString(obj) && !isNaN(Number(obj))
|
|
}
|
|
|
|
export default {
|
|
isSimpleObject,
|
|
isArrayLike,
|
|
isNumStr,
|
|
}
|
|
|
|
|