typeof功能修复/替代

时间:2012-06-19 20:27:37

标签: javascript

typeof效果不佳,typeof null会在object上返回。有没有比这种改进的替代内置或定制更好的替代品?

1 个答案:

答案 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一样。