@cainiaofe/cn-utils
Version:
菜鸟前端基础工具库
70 lines (69 loc) • 2.22 kB
JavaScript
/**
* Gets the `toStringTag` of `value`.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the `toStringTag`.
*/
import { extname } from 'path-browserify';
import { imageExtensions } from './const';
function getTag(value) {
if (value == null) {
return value === undefined ? '[object Undefined]' : '[object Null]';
}
return Object.prototype.toString.call(value);
}
export var isObjectLike = function (value) {
return typeof value === 'object' && value !== null;
};
export var isNumber = function (value) {
return typeof value === 'number' || (isObjectLike(value) && getTag(value) == '[object Number]');
};
export var isNaN = function (value) {
return isNumber(value) && value != +value;
};
export var isPlainObject = function (value) {
if (!isObjectLike(value) || getTag(value) != '[object Object]') {
return false;
}
if (Object.getPrototypeOf(value) === null) {
return true;
}
var proto = value;
while (Object.getPrototypeOf(proto) !== null) {
proto = Object.getPrototypeOf(proto);
}
return Object.getPrototypeOf(value) === proto;
};
export var isError = function (value) {
if (!isObjectLike(value)) {
return false;
}
var tag = getTag(value);
return (tag == '[object Error]' ||
tag == '[object DOMException]' ||
(typeof value.message === 'string' && typeof value.name === 'string' && !isPlainObject(value)));
};
export var isObject = function (value) {
var type = typeof value;
return value != null && (type === 'object' || type === 'function');
};
export var isImage = function (filePath) { return imageExtensions.has(extname(filePath).slice(1).toLowerCase()); };
/**
*判断 timestamp 是否合法
* @param timestamp 时间戳
* @returns
*/
export var isValidTimestamp = function (timestamp) {
// 检查是否是数字
if (typeof timestamp !== 'number' || isNaN(timestamp)) {
return false;
}
// 检查是否大于0
if (timestamp <= 0) {
return false;
}
// 创建日期对象并验证其有效性
var date = new Date(timestamp);
return date instanceof Date && !isNaN(date.getTime());
};