javascript 判断数据类型的几种方法
一、typeof 直接返回数据类型字段,但是无法判断数组、null、对象typeof 1"number"typeof NaN"number"typeof "1""string"typeof true"boolean"typeof undefined"undefined"typeof null"object"typeof []"object"typeof {}"object"
其中 null, [], {}都返回 "object"
二、instanceof 判断某个实例是不是属于原型
// 构造函数function Fruit(name, color) { this.name = name; this.color = color;}var apple = new Fruit("apple", "red");// (apple != null)apple instanceof Object // trueapple instanceof Array // false
三、使用 Object.prototype.toString.call()判断
call()方法可以改变this的指向,那么把Object.prototype.toString()方法指向不同的数据类型上面,返回不同的结果
Object.prototype.toString.call(1)"[object Number]"Object.prototype.toString.call(NaN);"[object Number]"Object.prototype.toString.call("1");"[object String]"Object.prototype.toString.call(true)"[object Boolean]"Object.prototype.toString.call(null)"[object Null]"Object.prototype.toString.call(undefined)"[object Undefined]"Object.prototype.toString.call(function a() {});"[object Function]"Object.prototype.toString.call([]);"[object Array]"Object.prototype.toString.call({});"[object Object]"
最后我们可以定义一个完美的判断数据类型的方法 _typeof()
function _typeof(obj){ var s = Object.prototype.toString.call(obj); return s.match(/\[object (.*?)\]/)[1].toLowerCase();};_typeof([12,3,343]);"array"_typeof({name: 'zxc', age: 18});"object"_typeof(1);"number"_typeof("1");"string" _typeof(null);"null"_typeof(undefined);"undefined"_typeof(NaN);"number"_typeof(Date);"function"_typeof(new Date());"date"_typeof(new RegExp());"regexp"