likes
comments
collection
share

Object.prototype.toString.call()如何判断一个数值类型

作者站长头像
站长
· 阅读数 1

首先创建一个Object对象

根据console.log(Object.prototype)可以得到**[object Object]**,结果发现:

**Object.prototype** 属性表示 Object 的原型对象。

原型对象中有一个toString方法,它用来返回对象的字符串表示

注意:Object本身也有一个toString方法,但是它返回的是函数

由此:我们可以通过**Object.prototype.toString**方法来判断数据类型

因为 js 的所有类都继承于Object,但是在类继承时,改写了toString方法,所以只有Object原型对象上的toString方法能够判断出数据的类型。

则第二步就是如何把其他类型的数据也通过**Object.prototype.****toString()**方法查找:

这里可以用call()方法,call(obj)可以改变当前this指向,把this绑定在参数obj上,即调用所有者对象的方法作为参数obj的方法。

最终:Object.prototype.toString.call() 就可以判断一个值的类型了

// 判断数据类型函数
function toRawType (value) {
  return Object.prototype.toString.call(value).slice(8, -1)
}

//结果
toRawType({}) //  Object 
toRawType([])  // Array    
toRawType(true) // Boolean
toRawType(undefined) // Undefined
toRawType(null) // Null
toRawType(function(){}) // Function