JS判断数据类型的五种方法

判断数据类型的方法

1.typeof

  • 语法:
typeof operand  ||  typeof(operand)
operand可以是变量或者表达式
类型 返回值
Number number
String string
Boolean boolean
Undefined undefined
Null object
Symbol symbol
Obejct object
Array object
Function object
其他对象 object

2.instanceof

  • 语法:
object instanceof constructor
object为实例对象  constructor为构造函数
  • js内置构造函数:
    • Array
    • Date
    • Error
    • Function
    • Object
    • RegExp
  • 用途:
    • 用来检查object是否为constructor的实例对象
    • 可用来判断对象类型
    • 不可判断原始类型
  • 示例:
var arr=[1,2,3]
console.log(arr instanceof Array) //true

var arr=[1,2,3]
console.log(arr instanceof Object) //true

var reg=/^\d{3,}$/
console.log(reg instanceof RegExp)  //true

function Person(){};
var student = new Person();
console.log(peason1 instanceof Person)  //true

3.Array.isArray()

  • 语法:
Array.isArray()
  • 用途:
    • 用于检测某变量是否为数组,返回值是Boolean型
  • 示例:
var arr = [1,2,3]
Array.isArray(arr)  //true

4.Object.prototype.toString.call()

  • 语法:
Object.prototype.toString.call()
括号内输入需要判断的内容

同时可以使用slice方法截取返回值
Object.prototype.toString.call().slice(8,-1)
  • 用途:

    • 用于判断浏览器内置对象
    • 可判断所有数据类型
    • 返回值是字符串
  • 示例:

Object.prototype.toString.call(1).slice(8,-1)  //'Number'

Object.prototype.toString.call('').slice(8,-1)  //'String'

Object.prototype.toString.call(true).slice(8,-1)  //'Boolean'

Object.prototype.toString.call(undefined).slice(8,-1)  //'Undefined'

Object.prototype.toString.call(null).slice(8,-1)  //'Null'

Object.prototype.toString.call([]).slice(8,-1)  //'Array'

Object.prototype.toString.call({}).slice(8,-1)  //'Object'

Object.prototype.toString.call(function(){}).slice(8,-1)  //'Function'

Object.prototype.toString.call(new Date).slice(8,-1)  //'Date'

5.constructor

  • 语法:
object.constructor
  • 用途:
    • constructor属性返回对象的构造函数
    • 且返回值是函数的引用
    • 不是函数名
  • 示例:
[].constructor === Array  //true

Number(1).constructor === Number //true

''.constructor === String //true

new Date().constructor === Date //true

new Error().constructor === Error //true

true.constructor === Boolean  //true

  • 注意:
    • null和undefined没有constructor,这两种类型的数据需要通过其他方式判断
    • 同时函数的constructor是不稳定的,这个主要体现在自定义对象上,当开发者重写protype后,原有的constructor引用会丢失,constructor会默认为Object

你可能感兴趣的:(JS判断数据类型的五种方法)