使用Object原型中的toString判断数据类型,objecttostring
分享于 点击 1143 次 点评:63
使用Object原型中的toString判断数据类型,objecttostring
使用Object原型中的toString方法判断数据类型
在JavaScript中并没有官方的给出判断变量数据类型的方法。而在以前我也是一直使用的typeof结合instanceof的方法来判断的。直到最近的一次面试,才学到了通过Object原型中的toString方法来判断数据类型的方法。
先来简单看一下用法:
可以看到,使用这个方法可以轻易的得到使用变量的数据类型。并且像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]";
}
相关文章
- 暂无相关文章
用户点评