5

typeof不能很好地工作,例如返回typeof nullobject这种改进的内置或定制替代品有没有更好的替代品?

4

1 回答 1

11

请参阅修复 JavaScript typeof 运算符

简而言之,您可以使用此功能:

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.

于 2012-06-19T20:29:19.543 回答