首先创建一个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()就可以判断一个值的类型了

    1. // 判断数据类型函数
    2. function toRawType (value) {
    3. return Object.prototype.toString.call(value).slice(8, -1)
    4. }
    5. //结果
    6. toRawType({}) // Object
    7. toRawType([]) // Array
    8. toRawType(true) // Boolean
    9. toRawType(undefined) // Undefined
    10. toRawType(null) // Null
    11. toRawType(function(){}) // Function