1. typeof () 也可以不加()
不足之处 不能区分对象和数组 因为 null 也会返回object 并且判断数组会返回object
2. instanceof() 用来对引用数据类型进行判断 引用数据类型例如 class类 array数组 interface接口 (object对象不是引用数据类型 而是引用数据类型的一个实例) instanceof 不仅能够检测构造函数 (构造函数 也就是 我们定义的类 格式就是 权限修饰符(public 共有/protected 受保护的/private 私有的)class 类名(){}) 还可以检测原型链 ( 原型链就是 实例对象 和原型对象的链接 每一个对象都有原型 原型本身又是对象 对象上面又有原型 以此类推形成的一个链式结构 称为原型链 并且 每一个实例对象都有一个__proto__属性 该属性指向原型对象 ) instanceof要求 前面必须是一个对象 后面是一个构造函数(constructor就是一个构造函数) 格式为 arr instanceof arr.__proto__.constructor(Array) 最后通过返回true 或 false 来判断类型
3. constructor 直接需要进行校验的属性.constructor就可以得到它的对象 例如 let a = '123' console.log(a.constructor) 返回值为 ƒ String() { [native code] }
4. Object.prototype.toString.call() 这个也是最靠谱的校验方法 格式为 Object.prototype.toString.call(属性) 返回值为 [object String] / [object Number] / [object Null] / [object Null] /