JavaScript类型检测
判断数据类型
typeof
var str="string";
console.log(typeof str); //string
var num=1;
console.log(typeof num); //number
var bn=false;
console.log(typeof bn); //boolean
var a;
console.log(typeof a); //undfined
var obj = null;
console.log(typeof obj); //object
var doc = document;
console.log(typeof doc);//object
var arr = [];
console.log(arr); //object
var fn = function(){};
console.log(typeof fn); //function
判断数组类型
1.instanceof
var arr=[];
console.log(arr instanceof Array) //返回true
原理:通过判断左操作数的对象的原型链上是否具有右操作数的构造函数的prototype属性。
2.constructor
console.log((123).constructor == Number); //true
console.log(true.constructor == Boolean); //true
console.log("string".constructor == String); //true
console.log([].constructor == Array); //true
console.log({}.constructor == Object); //true
原理:constructor 属性返回对创建此对象的数组函数的引用,就是返回对象相对应的构造函数
3.Object.prototype.toString.call(arr)
function isArray(arr) {
return Object.prototype.toString.call(arr);
}
var arr=[1,2,3,4];
var obj={a:'sun',b:11};
var fn = function () {}
console.log(isArray(arr)); //[object Array]
console.log(isArray(obj)); //[object Object]
console.log(isArray(fn)); //[object function]