使用 Object.prototype 上的原生 toString () 方法判断数据类型,使用方法如下:
| Object.prototype.toString.call(value) |
# 1. 判断基本类型:
| Object.prototype.toString.call(null); |
| Object.prototype.toString.call(undefined); |
| Object.prototype.toString.call(“abc”); |
| Object.prototype.toString.call(123); |
| Object.prototype.toString.call(true); |
# 2. 判断原生引用类型:
# 函数类型
| Function fn(){console.log(“test”);} |
| Object.prototype.toString.call(fn); |
# 日期类型
| var date = new Date(); |
| Object.prototype.toString.call(date); |
# 数组类型
| var arr = [1,2,3]; |
| Object.prototype.toString.call(arr); |
# 正则表达式
| var reg = /[hbc]at/gi; |
| Object.prototype.toString.call(arr); |
# 自定义类型
| function Person(name, age) { |
| this.name = name; |
| this.age = age; |
| } |
| var person = new Person("Rose", 18); |
| Object.prototype.toString.call(person); |
很明显这种方法不能准确判断 person 是 Person 类的实例,而只能用 instanceof 操作符来进行判断,如下所示:
| console.log(person instanceof Person); |
# 3. 判断原生 JSON 对象:
| var isNativeJSON = window.JSON && Object.prototype.toString.call(JSON); |
| console.log(isNativeJSON); |