玖叶教程网

前端编程开发入门

vue源码全面解析(四十五)源码中使用的工具类util


// 是 undefined 或者 null
function isUndef (v) {
    return v === undefined || v === null
  }
// 不是 undefined 或者 null
function isDef (v) {
    return v !== undefined && v !== null
  }
// true
function isTrue (v) {
    return v === true
  }
// false
function isFalse (v) {
    return v === false
  }
// 基本数据类型
function isPrimitive (value) {
    return (
      typeof value === 'string' ||
      typeof value === 'number' ||
      // $flow-disable-line
      typeof value === 'symbol' ||
      typeof value === 'boolean'
    )
  }
// 除了null之外的对象类型
function isObject (obj) {
    return obj !== null && typeof obj === 'object'
  }
var _toString = Object.prototype.toString;
// 返回一个字符的值,通常用着数据类型判断
// 例如 [object Object]、[object String]、[object NUmber]
  function toRawType (value) {
    return _toString.call(value).slice(8, -1)
  }
var _toString = Object.prototype.toString;
// 是否为 Object类型
function isPlainObject (obj) {
    return _toString.call(obj) === '[object Object]'
  }
// 是否为正则表达式
function isRegExp (v) {
    return _toString.call(v) === '[object RegExp]'
  }
// 是否为有效的数组索引
function isValidArrayIndex (val) {
    var n = parseFloat(String(val));
    return n >= 0 && Math.floor(n) === n && isFinite(val)
  }
// 是否为 Promise
function isPromise (val) {
    return (
      isDef(val) &&
      typeof val.then === 'function' &&
      typeof val.catch === 'function'
    )
  }
// 将值转换为字符串
function toString (val) {
    return val == null
      ? ''
      : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)
        ? JSON.stringify(val, null, 2)
        : String(val)
  }
// 将值转换为数值 
function toNumber (val) {
    var n = parseFloat(val);
    return isNaN(n) ? val : n
  }
// 移除数组的指定项
function remove (arr, item) {
    if (arr.length) {
      var index = arr.indexOf(item);
      if (index > -1) {
        return arr.splice(index, 1)
      }
    }
  }
// 查找一个对象是否有某个属性,但是不会去查找它的原型链
var hasOwnProperty = Object.prototype.hasOwnProperty;
function hasOwn (obj, key) {
  return hasOwnProperty.call(obj, key)
}
// 把类似数组的结构转换为真实数组
function toArray (list, start) {
    start = start || 0;
    var i = list.length - start;
    var ret = new Array(i);
    while (i--) {
      ret[i] = list[i + start];
    }
    return ret
  }
// 将属性混合到对象中去 
function extend (to, _from) {
    for (var key in _from) {
      to[key] = _from[key];
    }
    return to
  }

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言