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;

}

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

  

  

  

时间: 2024-12-28 16:21:17

js辨别对象的类型的相关文章

js检测对象的类型

在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. 示例: var array=[1,2,3]; Object.prototype.toString.call(array) ;//"[object Array]" var obj={name:'Tom'}; Object.prototype.toString.call(obj) ;//"[object Object]" var s

js中对象的类型

js中的类型分为三种,"内部对象"."宿主对象"."自定义对象" 1."内部对象"有Date.Function.Array.Regexp.Number.Object.String.Math.Global.Boolean, 还有各种错误类对象,包括Error.EvalError.RangeError.ReferenceError.SyntaxError和TypeError. "Global"."Ma

js判断对象的类型

开发中,不免需要对对象类型进行判断,列举下常见的判断方法: 1.typeof:对于function string number undifined boolean object都有效,注意返回值是字符串. 但null.Array检测出Object. 2.instanceof: 用于检测对象是否是特定类的一个实例,返回值是布尔值,最好和typeof配合使用(typeof值为Object时候用instanceof进行进一步判定).继承链上也可以用于判断是否继承了某对象. 3.对象.construct

怎样判断js对象的类型

在编写js程序的过程中,可能常常需要判断一个对象的类型,例如你写了一个函数,需要通过判断不同的参数类型来编写不同的代码. 首先可能会想到typeof操作符,看下面的这个例子: <script type="text/javascript"> var object = {}; var b = true; alert(typeof object + " " + typeof b); </script> 得到的结果如下: 从上面的结果可以看到,用ty

js面对对象编程

说到js,很大一部分人会说我很熟悉,在日常的web开发中经常用,那么你的js代码是符合面对对象思路的吗?那你会问我面向过程的js代码有什么不好吗?我的感受是面对对象的js编码更加简洁,减少了混乱,可维护行增强,适合编写富客户端时应用. 好了,首先看看js里如何定义对象: <html> <head> <script type="text/javascript"> var obj=new Object(); obj.name='josh'; obj.ag

js之对象

一.对象的定义: 对象是JavaScript的一个基本数据类型,是一种复合值,它将很多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值.即属性的无序集合. 二.对象的创建(多种方法) 1.对象直接量 / 字面量 var obj = { name: 'lyl', age: 18 } console.log(obj.name); // lyl 2.构造函数: (1).系统自带的的, eg: new Object(), Array(), Number(),Boolean(), Date()..

js之对象(经典)

一.对象的定义: 对象是JavaScript的一个基本数据类型,是一种复合值,它将很多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值.即属性的无序集合. 二.对象的创建(多种方法) 1.对象直接量 / 字面量 var obj = { name: 'lyl', age: 18 } console.log(obj.name); // lyl 2.构造函数: (1).系统自带的的, eg: new Object(), Array(), Number(),Boolean(), Date()..

js数据类型隐式转换笔记以及js包装对象

“37”+7              //377 “37”-7              //30 巧用+/-规则  变字符串  x+''   变数字x-0 js里面的==是不严格等于 “123” == 123 0 == false nul l== undefined new  Object() == new Object() [1,2]==[1,2] 但是[1,2]===[1,2]是错的 因为比较的是对象的引用 ps: NaN值和任何东西比较都不相等 即便是不严格等于 ———————————

js怎么判断浏览器类型

<script type="text/javascript"> function isIE(){ return navigator.appName.indexOf("Microsoft Internet Explorer")!=-1 && document.all; } function isIE6() { return navigator.userAgent.split(";")[1].toLowerCase().i