js辨别对象的类型

本文主要针对 Null,ExpReg,Array,Date这一些typeof函数辨别不了的对象; 

顺便贴上一篇关于typeof的理解:http://www.cnblogs.com/chaky/p/7284163.html

首先,辨别对象类型的方法:

1、instanceof(是否...的实例)  返回true or false

  我们可以用它来辨别 ExpReg Array Date类型的对象  不适用于null

  js辨别对象的类型

2、constructor //原型对象里的构造器指向; 不支持null识别

  

js辨别对象的类型

 

3、isArray 专门用于数组识别 (Array对象特有方法,不被子例 '继承' );

   js辨别对象的类型

4、String() 区分null 和 undefined  //该函数底层实现应有全等比较符

  js辨别对象的类型

5、根据对象类型特性判断属于是哪种对象;

  有3种类型 Array String NodeList;

  其中他们都有 length属性;

  forEach只有 Array和NodeList有;

  Array有concat,NodeList没有 

  通过特性的辨别我们就可以区分出3种属性类型;

6、万用辨别类型的方法,原理是通过 toString这方法;//转载,非原创

var is =   function (obj,type) 

      return (type === "Null" && obj === null) || 

           (type === "Undefined" && obj === void 0 ) || 

           (type === "Number" && isFinite(obj)) || Object.prototype.toString.call(obj).slice(8,-1) === type

}

 ------------------------如果有更好的辨别方法欢迎留言!--------------------------