Object----Object.prototype.toString.call()方法的使用
(1)判断基本类型:
Object.prototype.toString.call(null); //”[object Null]” Object.prototype.toString.call(undefined); //”[object Undefined]” Object.prototype.toString.call(“abc”); //”[object String]” Object.prototype.toString.call(123); //”[object Number]” Object.prototype.toString.call(true); //”[object Boolean]”
(2)判断原生引用类型:
函数类型:
Function fn(){console.log(“abc”);} Object.prototype.toString.call(fn); //”[object Function]”
日期类型:
var date = new Date(); Object.prototype.toString.call(date); //”[object Date]”
数组类型:
var arr = [1,2,3]; Object.prototype.toString.call(arr); //”[object Array]”
正则表达式:
var reg = /\w/g; Object.prototype.toString.call(reg); //"[object RegExp]"
自定义类型:
function Person(name, age) { this.name = name; this.age = age; } var person = new Person("snow", 18); Object.prototype.toString.call(person); //"[object Object]"
以上表明这种方法不能准确判断person是Person类的实例,但可以使用instanceof 操作符来进行判断,如下所示:
console.log(person instanceof Person); //true
(3)判断原生JSON对象:
var isNativeJSON = window.JSON && Object.prototype.toString.call(JSON); console.log(isNativeJSON); //”[object JSON]”