Vue源码中9个可借鉴的基础方法

一、基础判断

function isUndef(v) {
    return v === undefined || v === null
}
function isDef(v) {
    return v !== undefined && v !== null
}
function isTrue(v) {
    return v === true
}
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'
    )
}
复制代码

三、快速对象检查

function isObject(obj) {
    return obj !== null && typeof obj === 'object'
}
复制代码

四、获取值的原始类型字符串

var _toString = Object.prototype.toString;

function toRawType(value) {
    return _toString.call(value).slice(8, -1)
}
复制代码

五、严格的对象类型检查

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)
}
复制代码

八、值转换为实际的字符串

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
}
复制代码
相关文章
相关标签/搜索