js判断数据类型的方法

js判断数据类型的方法

typeof 判断数据类型

JavaScript 中使用 typeof 判断数据类型,只能区分基本类型(number、string、boolean、undefined、function、object),如果数据类型为 null、array、object ,使用 typeof 判断都会统一返回 ‘’object‘’ 字符串

console.log(typeof(1))   //number
console.log(typeof('a'))   //string
console.log(typeof(true))   //boolean
console.log(typeof(undefined))   //undefined
console.log(typeof(function() {}))   //function
console.log(typeof(null))   //object
console.log(typeof([1,2,3]))   //object
console.log(typeof({a: 'b'}))   //object

instanceof 判断数据类型

instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上

  • 判断一个数据是否为某个对象的实例
function Father() {}
let son = new Father()
console.log(son instanceof Father)   //true
  • 判断一个数据是否为某个引用类型
console.log(function() {} instanceof Function)   //true
console.log([1,2,3] instanceof Array)   //true
console.log({a: 'b'} instanceof Object)   //true

constructor 判断数据类型

constructor 是原型对象上的属性,指向构造函数,可以通过 constructor 来判断数据的类型

注:null、undefined 没有 constructor 属性,不能用来判断
let num = 1
console.log(num.constructor == Number)   //true
let str = 'a'
console.log(str.constructor == String)   //true
let bool = true
console.log(bool.constructor == Boolean)   //true
let fn = function() {}
console.log(fn.constructor == Function)   //true
let ary = [1,2,3]
console.log(ary.constructor == Array)   //true
let obj = {a: 'b'}
console.log(obj.constructor == Object)   //true

Object.prototype.toString.call() 判断数据类型

默认情况下,toString() 方法被每个 Object 对象继承,如果此方法在自定义对象中未被覆盖, toString() 方法会返回一个 “[object xxxx]” 的字符串(xxxx 为数据具体类型)。可以通过 toString() 来获取每个对象的类型,为了每个对象都能通过 Object.prototype.toString() 来检测,需要以 call() 或者 apply() 的形式来调用,传递要检查的对象作为第一个参数,即 Object.prototype.toString.call()(或者 Object.prototype.toString.apply())

console.log(Object.prototype.toString.call(1))   //[object Number]
console.log(Object.prototype.toString.call('a'))   //[object String]
console.log(Object.prototype.toString.call(true))   //[object Boolean]
console.log(Object.prototype.toString.call(undefined))   //[object Undefined]
console.log(Object.prototype.toString.call(function() {}))   //[object Function]
console.log(Object.prototype.toString.call(null))   //[object Null]
console.log(Object.prototype.toString.call([1,2,3]))   //[object Array]
console.log(Object.prototype.toString.call({a: 'b'}))   //[object Object]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值