数据类型检测的方法

159 阅读1分钟

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 内置类]";