使用typeof并不能判断obj是否是一个对象的问题

涉及的笔试题

使用typeof obj==='object’潜在问题,并不能确定obj是否是一个对象?

当初我看到这个题的时候,我的第一反应就是使用instanceof,其实这是错误的,这里让判断的就是object类型,并没有让你判断详细的对象类型(Array,String之类)

其实这里主要是为了区分null和对象,因为使用typeof 来判断null,返回的结果也是object。
这里提供三种方法来改进这个方法

方法一
if((obj!==null)&&(typeof obj==='object')&&(toString.call(obj)!="[object Array]")){}

上述方法分别判断obj不能为null,数组的情况,还有一个替代方法对空值,数组和函数返回false,但对于对象则是true的方法

方法二
if((obj!=null)&&(obj.constructor===Object)){}
方法三
var toString=Object.prototypr.toString
toString.call(null)// [object Null]
toString.call({})  //[object Object]
toString.call([]) //[object Array]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值