我先把话放在这, 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了