检测对象类型常用方法—JS

1、使用typeof操作符

对于String,Number,Undefined,Function等几种类型的对象来说,使用typeof操作符完全可以胜任,但是当检测Array类型时,就有点捉襟见肘了。例如:

var arr = [1,2,3,4,5];

typeof(arr); //返回的是object

2、使用instanceof操作符(typeof的改进)

使用instanceof操作符,返回的是一个布尔值(true或者false),从而指出该对象是否是特定类的一个实例。

instanceof操作符针对基本情况大都适用,但是当instanceof在跨frame对象构建的场景下使用会失效。

3、使用toString()方法(即Object.prototype.toString.call()方法,相对较为准确,建议使用)

我们知道,每个对象都有一个toString()方法。默认情况下,toString()方法被每个Object对象继承。如果toString()方法在自定义对象中未被覆盖,调用toString()方法返回“[object type]”,其中type是对象的类型。例如:

var o = new Object();

o.toString(); //返回的是 [object Object]

那么判断数组是不是用 arr.toString()呢?No!!!不是这样的。我们首先想的是Array继承Object,也会有toString()方法呀。为什么不可以呢?

虽然Array继承Object,有toString()方法,但是这个方法有可能会被改写而达不到我们的要求,所以我们会用

Object.prototype.toString.call()来保证其“纯洁性”,从而达到我们的要求。例如:

var arr = new Array(1,2,3,4,5);

Object.prototype.toString.call(arr); //返回的是[object Array]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值