js辨别对象的类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js辨别对象的类型相关的知识,希望对你有一定的参考价值。

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

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

 

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

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

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

  技术分享

 

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

  

技术分享

 这里有一处不解的是:

  Object指向构造器是Function

  而他原型里的construction指向的是 叫Object的构造函数

 技术分享

 

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

   技术分享

 

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

  技术分享

 

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

}

 

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

  

  

  

以上是关于js辨别对象的类型的主要内容,如果未能解决你的问题,请参考以下文章

JS数据类型-基础知识

你知道服务器CPU密集型和IO密集型吗?(论点:概念区别场景辨别)

js中判断对象数据类型的方法

js 对象转 formData 数据类型方法

JS基础知识点——原始类型和对象类型的区别

node.js对象数据类型