判断数据类型

188 阅读1分钟

我先把话放在这, typeof constructor instanceof什么的都弱爆了!

function wrapper(){
    function isType(type){
        return (content) => Object.prototype.toString.call(content) === `[object ${type}]`
    }
    let types = ['String', 'Boolean', 'Number', 'Null', 'Undefined', 'Function', 'Object'];
    let util = {};
    for(let i = 0;i < types.length;i++){
        let type = types[i];
        util['is'+ type]=isType(type);
    }
    return util;
}
let utils = wrapper();
utils.isString('hasd') // true
utils.isNumber(1) // true

以往的判断数据类型有一个痛点: 我们需要输入数据,还需要输入类型,如果类型拼错了,那么很难被感知,所以我们把类型限制在util里,如果写错类型,它会报没有这个函数的错

typeof 1 === 'numbbeer'; //false,我们希望是true,并且1确实是true,但是numbbeer拼错,输出就是false,当这行代码是上百条逻辑之一时,很难找到逻辑错误的原因
utils.isNumbbeer(1) // 现在,拼错就报错, isNumbbeer不是一个函数,你不再需要一行一行的debugger了