typeof简介:
-
原理:
将需要判断的数值类型转换成二进制,再根据二进制的数值去判断该值的数据类型。通常用来判断简单类型。 -
二进制与一般类型对应关系:
| 类型 | 二进制 |
| object | 000 |
| null | 000 |
| float | 010 |
| int | 001 |
| string | 100 |
| boolean | 110 |
instanceof原理:
instanceof用来检测constructor.prototype属性上是否存在参数object上,通常仅用来判断复杂类型。
Object.prototype.toString.call(需要判断的类型变量):
通过原型链上的函数,将类型转换为字符串形式,所有类型都会以字符串形式展示出来,结果为:’[object 类型名]’;
可以判断任何数据类型,不存在兼容问题
例如:[object string]
constructor:
通过访问该类型的构造函数来判断
eg:
(1).constructor === Number; // true
(new Function(){}) === Function; // true
缺点:如果创建一个对象来改变其原型,则判断会错误,其次,不能判断null,undefined,因为此两类不是由对象构建而来的
总结:一般在项目中,建议使用前两种来判断类型