/**
* @function type
* @param {any} obj - 被判断的对象
* @return {string} 返回类型:array/date/string/object/undefined/function/boolean/null/regexp/math 等
*/
var getType = function getType(obj) {
return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
};
/**
* 根据传入的类型使用 Object.toString 进行判断
* @function isType
* @param {any} obj - 需要判断的类型
* @param { string} type - 需要判断的类型字符串
* @return {boolean} 返回判断结果
* @example
* isType('', 'String') // true
* isType(new Date, 'Date') // true
* isType('', 'Array') // false
*/
function isType(obj, type) {
return getType(obj) === type.toLowerCase();
}
/**
* @file 判断方法
* @module is
*/
/**
* 判断是否为 null 或者 undefined
* @param {any} obj - 判断的对象
* @return {boolean} 返回判断结果
* @example
* isNil(null) // true
* isNil(undefind) // true
* isNil('') // false
*/
function isNil(obj) {
return obj === undefined || obj === null;
}
/**
* 判断是否为 undefined
* @param {any} obj - 判断的对象
* @return {boolean} 返回判断结果
* @example
* isUndefined(null) // false
* isUndefined(undefind) // true
* isUndefined('') // false
*/
function isUndefined(obj) {
return obj === undefined;
}
/**
* 判断是否为普通对象
* @param {any} obj - 需要判断的对象
* @return {boolean} 返回判断结果
* @example
* isPlainObject({}) // true
* isPlainObject(window) // false
*/
function isPlainObject(obj) {
if (isType(obj, 'Object')) {
return Object.getPrototypeOf(obj) === null || Object === obj.constructor;
}
return false;
}
/**
* 是否是function类型
* @name isFunction
* @function isFunction
* @param {any} obj 要判断的对象
* @return {Boolean} bool true|false
* @example
* isFunction(new Function()) // true
* isFuction('') // false
*/
function isFunction(obj) {
return isType(obj, 'Function');
}
/**
* 是否是string类型
* @name isString
* @function
* @param {any} obj 要判断的对象
* @return {Boolean} bool true|false
* isString([]) // false
* isString('array') // true
*/
function isString(obj) {
return isType(obj, 'String');
}
/**
* 是否是array类型
* @param {any} obj 要判断的对象
* @return {Boolean} bool 返回true|false
* @example
* isArray([]) // true
* isArray('array') // false
*/
function isArray(obj) {
return isType(obj, 'Array');
}
/**
* 判断是否为布尔类型
* @param {any} bool - 要判断的对象
* @return {Boolean} bool 返回true|false
* @example
* isBoolean(false) // true
* isBoolean(/a/) // false
*/
function isBoolean(bool) {
return bool === true || bool === false;
}
/**
* 判断一个对象是不是一个空对象
* @param {object} obj - 待判断的对象
* @return {boolean} 判断结果
* @example
* isEmptyObject({}) // true
*/
function isEmptyObject(obj) {
return Object.keys(obj).length === 0 && obj.constructor === Object;
}
/**
* @file guid
*/
var index = 0;
/**
* 获取 guid
* @function guid
* @param {number} [len = 8] - 获取的 guid 长度
* @return {string} 获取的唯一guid
*/
var guid = (function () {
var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8;
index++; // 这里按照 now 的长度,应该在11左右
// 所以 len 超过总长度,返回的是实际总长度
// 即不补零
return (Date.now().toString(16) + index).slice(-1 * len);
});
var gb = (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object' ? window : global;
/**
* @function getGlobalFunc
* @param {function} func - 全局函数
* @return {string} funcName - 返回全局函数名
*/
var getFunc = (function (func) {
if (typeof func === 'function') {
var name = "_xfunc_".concat(guid());
gb[name] = function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return func.apply(gb, args);
};
return name;
}
return func;
});