使用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);