本文转载自 《JavaScript 教程》 Object对象;
利用Object.prototype.toString
方法返回对象的类型字符串,因此可以用来判断一个值的类型。
由于实例对象可能会自定义toString
方法,覆盖掉Object.prototype.toString
方法,所以为了得到类型字符串,最好直接使用Object.prototype.toString
方法。通过函数的call
方法,可以在任意值上调用这个方法,帮助我们判断这个值的类型。
Object.prototype.toString.call(value)
不同数据类型的Object.prototype.toString
方法返回值如下。
- 数值:返回
[object Number]
。- 字符串:返回
[object String]
。- 布尔值:返回
[object Boolean]
。- undefined:返回
[object Undefined]
。- null:返回
[object Null]
。- 数组:返回
[object Array]
。- arguments 对象:返回
[object Arguments]
。- 函数:返回
[object Function]
。- Error 对象:返回
[object Error]
。- Date 对象:返回
[object Date]
。- RegExp 对象:返回
[object RegExp]
。- 其他对象:返回
[object Object]
。
这就是说,Object.prototype.toString
可以看出一个值到底是什么类型。利用这个特性,可以写出一个比typeof
运算符更准确的类型判断函数:
var type = function (o){ var s = Object.prototype.toString.call(o); return s.match(/\[object (.*?)\]/)[1].toLowerCase(); }; type({}); // "object" type([]); // "array" type(5); // "number" type(null); // "null" type(); // "undefined" type(/abcd/); // "regex" type(new Date()); // "date"