js检测数据类型的四种方式

js常见的数据类型分为两种,第一种是基本数据类型(string、number、null、undefined、Boolean、Symbol、BigInt),第二种是引用数据类型(Object、Array、RegExp...)

常见的检测数据类型方式:

1)typeof

2) instanceof

3) constructor

4) Object.prototype.toString.call()

 typeof

1) 定义:能够检测基本类型的符号

2)语法:typeof[value]

3) 返回值:[string、number、undefined、function、Object]

4) 缺点:1)不能够检测对象属于哪一种数据类型,例如数组对象、RegExp对象统一返回Object

      2)typeof null返回的是对象(Object)

      3)NaN/infinity返回的是number

 

instanceof

1)  定义:用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

2)语法:Object instanceof value

3) 返回值:Boolean

4) 缺点:

          1 ) 无法检测基本类型,返回的都是false ,只能检测复杂数据类型

          2)由于instanceof是根据原型来检测类型的,返回值也是布尔类型,因此无法直观的看出数据类型

          3) 因为原型可以更改,有时候利用instanceof来判断不一定十分准确

 

constructor

1)定义 : 通过构造器来判断类型。

2)语法 : target.constructor == "类型名字"

3)返回值:Boolean

4)缺点:原理基本和instanceof一样,都是根据原型判断

 

Object.prototype.toString.call()

1) 定义 : 返回一个表示该对象的字符串。

2) 语法 : Object.prototype.toString.call(params)

3) 返回值 : "[object 类型]"

posted @ 2020-11-12 11:08  lvyier_呀  阅读(901)  评论(0编辑  收藏  举报