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

Chason
2021-03-17 / 0 评论 / 0 点赞 / 648 阅读 / 1,825 字
温馨提示:
本文最后更新于 2021-03-17,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

原文:http://www.javanx.cn/20200226/vue-code/

1、基础判断

    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
    }

2、检查是否是原始值

    function isPrimitive(value) {
        return (
            typeof value === 'string' ||
            typeof value === 'number' ||
            // $flow-disable-line
            typeof value === 'symbol' ||
            typeof value === 'boolean'
        )
    }

3、快速对象检查

    function isObject(obj) {
        return obj !== null && typeof obj === 'object'
    }

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

    var _toString = Object.prototype.toString;

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

5、严格的对象类型检查

    function isPlainObject(obj) {
        return _toString.call(obj) === '[object Object]'
    }
    // 这里大家可以思考一下为什么使用这种方式,还有下面的正则检查

6、严格的正则类型检查

    function isRegExp(v) {
        return _toString.call(v) === '[object RegExp]'
    }

7、检查是够是有效的数组下标

    function isValidArrayIndex(val) {
        var n = parseFloat(String(val));
        return n >= 0 && Math.floor(n) === n && isFinite(val)
    }

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

    function toString(val) {
        return val == null ?
            '' :
            Array.isArray(val) || (isPlainObject(val) && val.toString === _toString) ?
            JSON.stringify(val, null, 2) :
            String(val)
    }

9、值转换为数字以进行持久化

    function toNumber(val) {
        var n = parseFloat(val);
        return isNaN(n) ? val : n
    }
0

评论区