typeof
typeof能检测出来的数据类型:
number、string、boolean、undefined、object、function、symbol
【注】其中function虽然∈对象,但是其有自身的某些属性及方法,因此可以单独检测出来
问题:对于引用数据类型:Array、Object等无法分别是具体哪个,只能检测出∈object
instanceof
该运算符主要用于检测针对使用typeof时对于引用数据类型(不是Function)时可以检测构造函数的
prototype属性是否出现在某个实例对象的原型链上。例如
<script>var arr=['1','2'];var obj={name:"dhh",age:19}console.log(obj instanceof Object) //trueconsole.log(arr instanceof Array); //trueconsole.log(arr instanceof Object); //true</script>问题:数组检测出来既∈Array,也∈Object
【注】不能检测由字面量方式创造的基本数据类型
constructor
constructor 属性返回对创建此对象的数组函数的引用。
主要解决了针对instanceof不能准确检测出来的情况
console.log(arr.constructor===Array); //true console.log(arr.constructor===Object); //false
Object.prototype.toString.call(value)
该方式可以检测任意数据类型