js 数据类型检测
一、typeof 用来检测数据类型运算符 首先返回一个字符串,其次字符串中包含了对应的数据类型。如:
"number","string","boolean","underfined","function","object"
局限性:
typeof null —》 object
不能区分数组、正则、还是对象中的其他值,返回的都是object
二、instanceof 检测某个实例是否属于这个类,可以检测数组正则等 var arr =[]; console.log(arr instanceof Array) -> true
局限性:
不能用来检测和处理字面量创建出来的基本数据类型的值;
在类的原型继承中,检测出来的是不一定准确 Fn.prototype = new Array; var f = new Fn; console.log(f instanceof Array) -> true
三、constructor 作用和instanceof 非常相似,但是可以检测基本类型的值, var num = 1; console.log(num.constructor === Number) -> true
var arr = [ ]; console.log(arr.constructor === Array) -> true;
局限性:
我们可以对类的原型进行重写,在重写的过程中可能会把constructor覆盖,导致检测的结果不一定正确
四、Object.prototype.toString.call() // 最准确、最常用的检测方法,可以避免所有弊端