javascript 工具库——类型判断
Javascript 编写的工具库,集成常见方法,类型判断等
类型判断 TypeJudgement
javascript
const getType = (obj) => Object.prototype.toString.call(obj).slice(8, -1)
/**
* 判断obj是否为对象
* @param { * } obj 测试目标
* @returns obj 是 Object,返回 true
*/
export function isObject(obj) {
return getType(obj) === 'Object'
}
/**
* 判断obj是否为数组
* @param { * } obj 测试目标
* @returns obj 是 Array,返回 true
*/
export function isArray(obj) {
return getType(obj) === 'Array'
}
/**
* 判断obj是否为字符串
* @param { * } obj 测试目标
* @returns obj 是 String,返回 true
*/
export function isString(obj) {
return getType(obj) === 'String'
}
/**
* 判断obj是否为数字
* @param { * } obj 测试目标
* @returns obj 是 Number,返回 true
*/
export function isNumber(obj) {
return getType(obj) === 'Number' && obj === obj
}
/**
* 判断obj是否为符号
* @param { * } obj 测试目标
* @returns obj 是 Symbol,返回 true
*/
export function isSymbol(obj) {
return getType(obj) === 'Symbol'
}
/**
* 判断obj是否为正则表达式
* @param { * } obj 测试目标
* @returns obj 是 RegExp,返回 true
*/
export function isRegExp(obj) {
return getType(obj) === 'RegExp'
}
/**
* 判断obj是否为文件对象
* @param { * } obj 测试目标
* @returns obj 是 File,返回 true
*/
export function isFile(obj) {
return getType(obj) === 'File'
}
/**
* 判断obj是否为二进制对象
* @param { * } obj 测试目标
* @returns obj 是 Blob,返回 true
*/
export function isBlob(obj) {
return getType(obj) === 'Blob'
}
/**
* 判断obj是否为未定义
* @param { * } obj 测试目标
* @returns obj 是 undefined,返回 true
*/
export function isUndefined(obj) {
return obj === undefined
}
/**
* 判断obj是否为函数
* @param { * } obj 测试目标
* @returns obj 是 function,返回 true
*/
export function isFunction(obj) {
return typeof obj === 'function'
}
/**
* 判断obj是否为空对象
* @param { * } obj 测试目标
* @returns obj 是 Object 且 obj不含任何key,返回 true
*/
export function isEmptyObject(obj) {
return isObject(obj) && Object.keys(obj).length === 0
}
const getType = (obj) => Object.prototype.toString.call(obj).slice(8, -1)
/**
* 判断obj是否为对象
* @param { * } obj 测试目标
* @returns obj 是 Object,返回 true
*/
export function isObject(obj) {
return getType(obj) === 'Object'
}
/**
* 判断obj是否为数组
* @param { * } obj 测试目标
* @returns obj 是 Array,返回 true
*/
export function isArray(obj) {
return getType(obj) === 'Array'
}
/**
* 判断obj是否为字符串
* @param { * } obj 测试目标
* @returns obj 是 String,返回 true
*/
export function isString(obj) {
return getType(obj) === 'String'
}
/**
* 判断obj是否为数字
* @param { * } obj 测试目标
* @returns obj 是 Number,返回 true
*/
export function isNumber(obj) {
return getType(obj) === 'Number' && obj === obj
}
/**
* 判断obj是否为符号
* @param { * } obj 测试目标
* @returns obj 是 Symbol,返回 true
*/
export function isSymbol(obj) {
return getType(obj) === 'Symbol'
}
/**
* 判断obj是否为正则表达式
* @param { * } obj 测试目标
* @returns obj 是 RegExp,返回 true
*/
export function isRegExp(obj) {
return getType(obj) === 'RegExp'
}
/**
* 判断obj是否为文件对象
* @param { * } obj 测试目标
* @returns obj 是 File,返回 true
*/
export function isFile(obj) {
return getType(obj) === 'File'
}
/**
* 判断obj是否为二进制对象
* @param { * } obj 测试目标
* @returns obj 是 Blob,返回 true
*/
export function isBlob(obj) {
return getType(obj) === 'Blob'
}
/**
* 判断obj是否为未定义
* @param { * } obj 测试目标
* @returns obj 是 undefined,返回 true
*/
export function isUndefined(obj) {
return obj === undefined
}
/**
* 判断obj是否为函数
* @param { * } obj 测试目标
* @returns obj 是 function,返回 true
*/
export function isFunction(obj) {
return typeof obj === 'function'
}
/**
* 判断obj是否为空对象
* @param { * } obj 测试目标
* @returns obj 是 Object 且 obj不含任何key,返回 true
*/
export function isEmptyObject(obj) {
return isObject(obj) && Object.keys(obj).length === 0
}
typescript
const getType = (obj: any) => Object.prototype.toString.call(obj).slice(8, -1)
/**
* 判断obj是否为对象
*/
export function isObject(obj: any): obj is { [key: string]: any } {
return getType(obj) === 'Object'
}
/**
* 判断obj是否为数组
*/
export function isArray(obj: any): obj is any[] {
return getType(obj) === 'Array'
}
/**
* 判断obj是否为字符串
*/
export function isString(obj: any): obj is string {
return getType(obj) === 'String'
}
/**
* 判断obj是否为数字
*/
export function isNumber(obj: any): obj is number {
return getType(obj) === 'Number' && obj === obj
}
/**
* 判断obj是否为符号
*/
export function isSymbol(obj: any): obj is symbol {
return getType(obj) === 'Symbol'
}
/**
* 判断obj是否为正则表达式
*/
export function isRegExp(obj: any) {
return getType(obj) === 'RegExp'
}
/**
* 判断obj是否为文件对象
*/
export function isFile(obj: any): obj is File {
return getType(obj) === 'File'
}
/**
* 判断obj是否为二进制对象
*/
export function isBlob(obj: any): obj is Blob {
return getType(obj) === 'Blob'
}
/**
* 判断obj是否为未定义
*/
export function isUndefined(obj: any): obj is undefined {
return obj === undefined
}
/**
* 判断obj是否为函数
*/
export function isFunction(obj: any): obj is (...args: any[]) => any {
return typeof obj === 'function'
}
/**
* 判断obj是否为空对象
*/
export function isEmptyObject(obj: any): boolean {
return isObject(obj) && Object.keys(obj).length === 0
}
const getType = (obj: any) => Object.prototype.toString.call(obj).slice(8, -1)
/**
* 判断obj是否为对象
*/
export function isObject(obj: any): obj is { [key: string]: any } {
return getType(obj) === 'Object'
}
/**
* 判断obj是否为数组
*/
export function isArray(obj: any): obj is any[] {
return getType(obj) === 'Array'
}
/**
* 判断obj是否为字符串
*/
export function isString(obj: any): obj is string {
return getType(obj) === 'String'
}
/**
* 判断obj是否为数字
*/
export function isNumber(obj: any): obj is number {
return getType(obj) === 'Number' && obj === obj
}
/**
* 判断obj是否为符号
*/
export function isSymbol(obj: any): obj is symbol {
return getType(obj) === 'Symbol'
}
/**
* 判断obj是否为正则表达式
*/
export function isRegExp(obj: any) {
return getType(obj) === 'RegExp'
}
/**
* 判断obj是否为文件对象
*/
export function isFile(obj: any): obj is File {
return getType(obj) === 'File'
}
/**
* 判断obj是否为二进制对象
*/
export function isBlob(obj: any): obj is Blob {
return getType(obj) === 'Blob'
}
/**
* 判断obj是否为未定义
*/
export function isUndefined(obj: any): obj is undefined {
return obj === undefined
}
/**
* 判断obj是否为函数
*/
export function isFunction(obj: any): obj is (...args: any[]) => any {
return typeof obj === 'function'
}
/**
* 判断obj是否为空对象
*/
export function isEmptyObject(obj: any): boolean {
return isObject(obj) && Object.keys(obj).length === 0
}