JavaScript类型检测

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]
发布了102 篇原创文章 · 获赞 252 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/low666/article/details/104975185