JAVASCRIPT里常用的判断数据类型的方法

Proud lion 前端 2020-09-17

一、typeof

返回的数据类型,包含 number、boolean、symbol、string、object、undefined、function这几种。

由此可以看出typeof没有办法得到引用类型的具体类型。

代码:

typeof 666 输出 number 
typeof null 输出 object 
typeof {} 输出 object 
typeof [] 输出 object 
typeof (function(){}) 输出 function
typeof undefined 输出 undefined 
typeof '666' 输出 string 
typeof true 输出 boolean

比如像数组、日期、正则 typeof只会返回处于其原型链最顶端的Object类型。只有function列外可以得到确切的类型。

二、instanceof

判断一直对象类型的方法 instanceof 后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。

var aa = [1,2,3]; 
var bb = new Date(); 
var cc = function(){alert(111);}; 
var dd = function(){this.name="22";}; 
console.log(aa instanceof Array) //true
console.log(bb instanceof Date) //true
console.log(cc instanceof Function) //true
// console.log(dd instanceof function ) //false

三、constructor

根据对象的constructor判断,返回对创建此对象的数组函数的引用。

var c= [1,2,3]; 
var d = new Date(); 
var e = function(){alert(111);}; 
alert(c.constructor === Array) //true
alert(d.constructor === Date) //true
alert(e.constructor === Function) //true
//注意: constructor 在类继承时会出错

四、Object.prototype.toString.call()

所有数据类型均可判断(推荐

这是对象的一个原生原型扩展函数,用来更精确的区分数据类型。

Object.prototype.toString.call('') ;   // [object String]
Object.prototype.toString.call(1) ;    // [object Number]
Object.prototype.toString.call(true) ; // [object Boolean]
Object.prototype.toString.call(undefined) ; // [object Undefined]
Object.prototype.toString.call(null) ; // [object Null]
Object.prototype.toString.call(new Function()) ; // [object Function]
Object.prototype.toString.call(new Date()) ; // [object Date]
Object.prototype.toString.call([]) ; // [object Array]
Object.prototype.toString.call(new RegExp()) ; // [object RegExp]
Object.prototype.toString.call(new Error()) ; // [object Error]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值。

中文版Postman,rap文档管理

评论