1.typeof 返回一个字符串,字符串中的内容代表了当前的数据类型;
不能具体细分对象数据类型中的对象、数组、正则...
用typeof校验null时,返回的是Object,null代表空对象指针;
用typeof校验对象数据类型,返回的是Object;
typeof 可以检测函数;
2.instanceof 检测实例是否属于某个类;如果是返回true,不是返回false;
只要当前类在当前实例的原型链上都返回true;
instanceof 不能检测通过字面量方式创建的基本数据类型的值;
继承可以导致检测结果不准确;
3.constructor 校验当前实例是否是Fn的一个实例,是的话返回true,不是返回false 当修改原型的空间地址,或者通过继承修改原型链,都会导致检测结果不准确;
4.Object.prototype.toString.call() 通过自定义类创建的实例,都返回"[object Object]"
可以简写为toString.call();
全局window下,并没有toString这个方法,那么会通过__proto__一直向上查找到Object,最终可以使用Object原型中的toString;让toString方法运行,并且改变了toString中的this指向,返回一个"[object 内置类]";