JavaScript类型校验

一、typeof [value]

用途:检测数据类型的运算符;

细节点:

特点:typeof检测出的结果都是小写字符串形式,包含对应的数据类型,所以typeof typeof []结果就是typeof “object”==》“string”;

**特点:NaN/Infinity都是数字类型,检测结果正常是 “number”;

弊端:typeof null的结果是"object"(这是浏览器的bug,因为所有值在计算中都是二进制编码存储,浏览器默认把前三位是000的当做对象,null的二进制编码前三位是000,所以被误当做对象判断;

Object.prototype.proto==null;Object(最高层)类的原型对象的原型就是指向null);
弊端:typeof 普通对象/数组对象/正则对象…结果都是"object",所以 typeof 方法不能更细地分辨属于哪种对象。**

if( x != null && typeof x == 'object' ){
     //当x是任意对象时进行操作}
typeof(function(){
     }) //= "function"

二、instanceof

用途:检测某一个实例是否属于这个类;

三、constructor

用途:检测实例和类的关系,从而检测数据类型,实例的原型_proto_与类的原型对象指向一样,类的原型对象上有constructor属性指向类本身;

四、Object.prototype.toString.call( [value] )

用途:借助Object类的原型对象属性检测类型;

你可能感兴趣的:(JS,js,javascript)