码迷,mamicode.com
首页 > Web开发 > 详细

js辨别对象的类型

时间:2017-08-04 20:29:37      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:target   logs   适用于   reg   函数   cti   strong   支持   html   

本文主要针对 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辨别对象的类型

标签:target   logs   适用于   reg   函数   cti   strong   支持   html   

原文地址:http://www.cnblogs.com/chaky/p/7286803.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!