判断各种数据类型

/**
   * @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;
  });

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值