• 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