js判断对象类型的两种方法

52 篇文章 5 订阅
15 篇文章 0 订阅

在js 中 , 有一种判断数据基本类型的方法 typeof , 只能判断5中基本类型:即 “number”,”string”,”undefined”,”boolean”,”object” 五种。

用法为:

typeof 1
typeof str

console.log(typeof 1)  //打印出 number

typeof 'a' == 'string'    //结果为true

可见: typeof 会根据对象类型返回对应的类型字符串, 但是有几个缺点:

  1. 对于数组、函数、对象来说,其关系错综复杂,使用 typeof 都会统一返回 “object” 字符串,
  2. null也会返回’object’
  3. 对NaN返回是’number’
let a={i:1} let a =[1,2], let a = func...
typeof a //这个结果都是object

var obj = null
if (typeof obj === 'object') {
    obj.a() // 这里报错
}

var obj = {}
var num = parseInt(obj.a)
if (typeof num === 'number') {
    num = num + 10 // 执行后num仍然是NaN
}

那么此时我们有第二个方法可以使用, 是 ES3中的 Object.prototype.toString方法,我们可以用Object.prototype.toString.call(obj)检测对象类型:

console.log(Object.prototype.toString.call("jerry"));//[object String]
console.log(Object.prototype.toString.call(12));//[object Number]
console.log(Object.prototype.toString.call(true));//[object Boolean]
console.log(Object.prototype.toString.call(undefined));//[object Undefined]
console.log(Object.prototype.toString.call(null));//[object Null]
console.log(Object.prototype.toString.call({name: "jerry"}));//[object Object]
console.log(Object.prototype.toString.call(function(){}));//[object Function]
console.log(Object.prototype.toString.call([]));//[object Array]
console.log(Object.prototype.toString.call(new Date));//[object Date]
console.log(Object.prototype.toString.call(/\d/));//[object RegExp]
function Person(){};
console.log(Object.prototype.toString.call(new Person));//[object Object]

使用方法如下:

判断是否为函数

function isFunction(it) {
        return Object.prototype.toString.call(it) === '[object Function]';
    }

判断是否为数组:

function isArray(o) { 
  return Object.prototype.toString.call(o) === '[object Array]';  
}
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值