JavaScript有6种简单数据类型(也称为原始数据类型)和1种称为Object的复杂数据类型。您不能在JavaScript中自定义您自己的数据类型。所有的值都可以使用上面7种数据类型中的一种来表示。UndefinedNullBooleanNumberStringSymbolObject可以使用typeof运算符来确定任何变量的数据类型。对值使用typeof将返回以下字符串之一:“undefined”表示该值未定义“number”表示该值“boolean”表示该值是一个布尔值“string”表示该值是一个字符串“symbol”表示该值是一个符号"function"表示该值是一个函数"object"表示该值是一个对象或null(因为特殊值null被认为是对空对象的引用)使用toString()来检测对象类型可以通过toString()得到每个对象的类型。为了让每个对象都能被Object.prototype.toString()检测到,需要以Function.prototype.call()或Function.prototype.apply()的形式调用,将要检测的对象作为第一个参数,叫做thisArg。consttoString=Object.prototype.toString;toString.call(newDate);//[对象日期]toString.call(newString);//[对象字符串]toString.call(Math);//[objectMath]//自JavaScript1.8.5toString.call(undefined);//[对象未定义]toString.call(null);//[objectNull]添加常用类型检测方法ts版consttoString=Object.prototype.toString;exportfunctionis(val:unknown,type:string){returntoString.call(val)===`[object${type}]`;}exportfunctionisObject(val:any):valisRecord{returnval!==null&&is(val,'Object');}exportfunctionisDate(val:unknown):valisDate{returnis(val,'Date');}exportfunctionisNull(val:unknown):valisnull{returnval===null;}exportfunctionisNumber(val:unknown):valisnumber{返回is(val,'Number');}导出函数isPromise(val:unknown):valisPromise{returnis(val,'Promise')&&isObject(val)&&isFunction(val.然后)&&isFunction(val.catch);}导出函数isString(val:unknown):valisstring{returnis(val,'String');}exportfunctionisFunction(val:unknown):valisFunction{returntypeofval==='function';}导出函数isBoolean(val:unknown):valisboolean{returnis(val,'Boolean');}exportfunctionisRegExp(val:unknown):valisRegExp{returnis(val,'RegExp');}exportfunctionisArray(val:any):valisArray{returnval&&Array.isArray(val);}exportfunctionisUrl(path:string):boolean{constreg=/(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;returnreg.test(path);}参考文献:JavaScript高级程序设计第4版