typeof
效果不佳,typeof null
会在object
上返回。有没有比这种改进的替代内置或定制更好的替代品?
答案 0 :(得分:9)
请参阅Fixing the JavaScript typeof Operator。
简而言之,您可以使用此功能:
var toType = function (obj) {
return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}
toType(null); // -> "null"
toType({}); // -> "object"
toType([]); // -> "array"
toType("asdf"); // -> "string"
toType(/asdf/); // -> "regexp"
// etc.
你应该看到这篇文章的具体内容,说明它为什么会这样运作,以及你对它的期望。它将始终返回一个字符串,就像typeof
一样。