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

119 阅读1分钟

检查是否是原始值

    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
    }