1、typeof
    使用typeof能判断String、Boolean、Number、Undefined
    null和Object都为Object类型

    2、instanceof、constructor
    原理判断原型链能否找到该类型
    能判断出String、Boolean、Number、Array、Function、Object(null、object都为Object)
    null、object无法区分,undefined无法判断

    3、Object.prototype.toString.call() 最全
    远离使用原型的toString来判断类型
    能判断出String、Boolean、Number、Array、Undefined、Function、Object、Array、Function、Date…

    4、判断数组
    上2、3
    Array.isArrray(obj);
    Array.prototype.isPrototypeOf(obj)

    参考链接:
    https://juejin.cn/post/6940945178899251230#heading-2