使用Object原型中的toString判断数据类型

使用Object原型中的toString方法判断数据类型

在JavaScript中并没有官方的给出判断变量数据类型的方法。而在以前我也是一直使用的typeof结合instanceof的方法来判断的。直到最近的一次面试,才学到了通过Object原型中的toString方法来判断数据类型的方法。

先来简单看一下用法:

toString00

可以看到,使用这个方法可以轻易的得到使用变量的数据类型。并且像Array这种复杂数据类型也能准确的判断出来。

那么这个方法和instanceof判断有什么不同呢?

instanceof,顾名思义是判断某个变量是否是某个类或者说函数的实例。所以我猜测在判断时,会顺着原型链向上查找该实例的原型,如果匹配到了那么返回true否则返回false。

而toString方法则是直接返回对象的类型,因此也就少了很多问题。不过这个方法对于那些不属于js内置类型的变量,检测为object类型。

在刚刚接触到这个方法的时候也是心存疑惑,为什么需要去object上取这个方法,而不是直接使用那个对象的toString方法呢?

因为JavaScript中的很多内置对象都重写了toString函数,跟最初的object上的函数功能已然不一样。

类型行为描述
Array将 Array 的每个元素转换为字符串,并将它们依次连接起来,两个元素之间用英文逗号作为分隔符进行拼接。
Boolean如果布尔值是true,则返回”true”。否则返回”false”。
Date返回日期的文本表示。
Error返回一个包含相关错误信息的字符串。
Function返回如下格式的字符串,其中 functionname 是一个函数的名称,此函数的 toString 方法被调用: “function functionname() { [native code] }”
Number返回数值的字符串表示。还可返回以指定进制表示的字符串,请参考Number.toString()
String返回 String 对象的值。
Object返回”[object ObjectName]”,其中 ObjectName 是对象类型的名称。

通常情况下,我们使用console.log输出到控制台的变量,都是经过tostring转化之后的。

因此我们如果想要获取变量的数据类型,就只能通过object上的tostring方法了。

在平时,我们使用该方法判断Array类型的变量比较多,因为其他类型的变量相对来说比较容易得到类型。所以将其封装成一个方法:

function isArray(arr) {
    var arrType = Object.prototype.toString.call(arr);
    return arrType === "[object Array]";
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值