-
typeof:用来检测数据类型的运算符。
能够返回的数据类型有6种(“number”,“string”,“bolean”,“undefined”,“function”,“object”)。在js中,null值表示一个空对象指针,用typeof检测null会返回“object”。
-
instanceof:检测某一个实例是否属于某个类。
只要在当前实例的原型链上的对象,用其检测出来都为true。在类的原型继承中,最后检测出来的结果未必正确。
-
constructor:是函数原型上的属性,该属性指向的是构造函数本身。
作用和instsnceof非常相似,与instanceof不同的是,不仅可以处理引用数据类型,还可以处理原始数据类型。在重写某个类上的原型的时候,在重写的过程中很可能把之前constructor给覆盖了,这样检测出来的结果就是不准确的。
-
Object.prototype.toString.call():原型链上的Object对象的toString方法。
console.log(Object.prototype.toString.call(1)); //[object Number] console.log(Object.prototype.toString.call(/^sf/)); //[object RegExp] console.log(Object.prototype.toString.call("hello")); //[object String] console.log(Object.prototype.toString.call(true)); //[object Boolean] console.log(Object.prototype.toString.call(null)); //[object Null] console.log(Object.prototype.toString.call(undefined)); //[object Undefined] console.log(Object.prototype.toString.call(function() {})); //[object Function] console.log(typeof(Object.prototype.toString.call(function() {}))); //string