首先创建一个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