一、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"
二、[ example ] instanceof [ class ]
用途:检测某一个实例是否属于这个类;
弊端:
三、[ example ].constructor === [ class ]
用途:检测实例和类的关系,从而检测数据类型,实例的原型_proto_与类的原型对象指向一样,类的原型对象上有constructor属性指向类本身;
弊端:
四、Object.prototype.toString.call( [value] )
用途:借助Object类的原型对象属性检测类型;
弊端:

本文深入解析JavaScript中的数据类型检测方法,包括typeof、instanceof、constructor和Object.prototype.toString.call的使用及局限性,帮助开发者准确判断变量类型。
359

被折叠的 条评论
为什么被折叠?



