1.typeof :检测基本数据类型,返回值是一个字符串(所以连续出现两个或以上的typeof时,结果都是"string")
包含"number"、"string"、"boolean"、"undefined"、"object"、"function"
要注意的是 typeof null --> "object"
typeof的局限性:不能具体检测object下的细分类型,比如Array,Object...
1 var num=9; 2 alert(typeof num); //"number"
2.instanceof :检测某个对象是否是这个类的一个实例,返回值是boolean
可以检测对象数据类型的细分
1 funcction Fn() { 2 this.a=15; 3 } 4 var f1=new Fn(); 5 console.log(f1 instanceof Fn); //true 6 console.log(f1 instanceof Array); //false
console.log(f1 instanceof Object); // true ,f1不仅是Fn的实例,它也是一个对象数据类型的,所以也是Object的一个实例。
这里涉及到类、实例的一些探讨:
类,是函数数据类型的 typeof Fn --> "function"
实例,是对象数据类型的 typeof f1 --> "object"
而函数是具有两面性的,既是函数数据类型,也是对象数据类型
这里要把握好对象、类、实例的概念,理解JS中万物皆对象。
3.constructor :
4.Object.prototype.toString.call()