使用 toString() 来检测对象的类型
function typeOf(obj) { // 返回的字符串格式为:"[object Typexxx]" const typeValue = Object.prototype.toString.call(obj); // 截取字符串中的类型描述字符,从空白符索引至倒数第一位索引之前 const typeString = typeValue.slice(typeValue.indexOf(' ') + 1, -1); return typeString.toLowerCase(); }
如果觉得上述 typeOf 函数返回的一个字符串,判断起来不够方便,也可以对其进行2次封装:
const isDate = date => typeOf(date) === 'date'; const isSymbol = symbol => typeOf(symbol) === 'symbol'; const isMap = map => typeOf(map) === 'map'; const isFunc = func => typeOf(func) === 'function';
注意:不要用此函数来判断 自定义类的实例 的类型