Javascript中常见类型对象有:

Boolean, Number, String, Function, Array, Date, RegExp, Object, Error, Symbol等等.

下面提供区分这几种类型的工具方法,前提是使用javascript,如果项目中使用了jquery或者angularjs等框架,就没必要自己再写这样的工具函数。

第一种:最笨的办法,一一列举

function isBoolean(value) {return typeof value === 'boolean';}
function isNumber(value) {return typeof value === 'number';}
function isString(value) {return typeof value === 'string';}
function isFunction(value) {return typeof value === 'function';}
var isArray = Array.isArray;
function isDate(value) {return toString.call(value) === '[object Date]';}
function isRegExp(value) {return toString.call(value) === '[object RegExp]';}
function isObject(value) {return value !== null && typeof value === 'object';} function isUndefined(value) {return typeof value === 'undefined';}
function isDefined(value) {return typeof value !== 'undefined';}
function isBlankObject(value) {
return value !== null && typeof value === 'object' && !getPrototypeOf(value);
}
function isFile(obj) {return toString.call(obj) === '[object File]';}
function isFormData(obj) {return toString.call(obj) === '[object FormData]';}
function isBlob(obj) {return toString.call(obj) === '[object Blob]';}
function isWindow(obj) {return obj && obj.window === obj;}

这样看下来,这些方法其实就是利用 typeof和toString方法,在外面定义一个function而已,也不叫封装,也没必要封装。

使用时,直接用就可以。那如果说在使用时,不知道什么时候用typeof,什么时候用toString。

很简单嘛,直接拷贝上面代码(坏笑)。要记住这么多方法名也还挺不容易的,哦?有规律,类别首字母大写,前面加"is"。

第二种,jQuery式封装,定义一个统一接口

这种方法相对于上面的方法,就简单太多了。

想要知道某个对象是什么类型,调用type()方法。

想要知道某个对象是不是某类型,使用type() ==='某类型的小写字符串',例如:type() ==='string' 或者 type() ==='array'

var class2type = {};
"Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ).forEach(function(element,index){
class2type[ "[object " + element + "]" ] = element.toLowerCase();
}); function type(obj) {
if ( obj == null ) {
return obj + "";
} return typeof obj === "object" || typeof obj === "function" ?
class2type[ toString.call( obj ) ] || "object" :
typeof obj;
}

javascript 的工具方法 --- 类型判断的更多相关文章

  1. JavaScript常用工具方法

    JavaScript常用工具方法 1.日期格式化 2.将日期字符串转换为Date,字符串格式为(yyyy-mm-dd hh:mm:ss) 3.JS获取当天00:00:00时间和23:59:59的时间 ...

  2. JavaScript和jQuery的类型判断

    此博文为原创,转载请注明出处! 对于类型的判断,JavaScript用typeof来进行. 栗子: console.log(typeof null); //object console.log(typ ...

  3. JavaScript常用工具方法封装

    因为工作中经常用到这些方法,所有便把这些方法进行了总结. JavaScript 1. type 类型判断 isString (o) { //是否字符串 return Object.prototype. ...

  4. JavaScript中关于bool类型判断的一些总结。

    我从书上看到了一些关于   int类型 0 转换成boolean值得时候会把0转换成 false ,string 类型 的  "" 也会装换成false; 所以我就想,我能不能用一 ...

  5. JavaScript 文件上传类型判断

    文件上传时用到一个功能,使用html元素的input标签实现, <input id="imageFile" name="imageFile1" accep ...

  6. javascript常用工具类整理(copy)

    JavaScript常用工具类 类型 日期 数组 字符串 数字 网络请求 节点 存储 其他 1.类型 isString (o) { //是否字符串 return Object.prototype.to ...

  7. 【跟着子迟品 underscore】常用类型判断以及一些有用的工具方法

    Why underscore 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对 ...

  8. Underscore.js 常用类型判断以及一些有用的工具方法

    1. 常用类型判断以及一些有用的工具方法 underscore.js 中一些 JavaScript 常用类型检查方法,以及一些工具类的判断方法. 首先我们先来谈一谈数组类型的判断.先贴出我自己封装好的 ...

  9. jQuery使用(十二):工具方法之type()之类型判断

    type()的使用 类型判断方法之is...() 实现原理可以参考我的另一篇js源码剖析博客: 类型和原生函数及类型转换(二:终结js类型判断) $.type( undefined ) === &qu ...

随机推荐

  1. 异步流程控制库GoWithTheFlow

    异步流程控制库GoWithTheFlow 一个尾触发方式来控制异步流程的库, 有seq(顺序执行) par(同步执行) 两种方法 博客 http://notes.jetienne.com/2011/0 ...

  2. windbg命令学习1

    一.windbg 常用知识: 1. Windbg中的调试命令,分为三种:基本命令,元命令和扩展命令.基本命令和元命令是调试器自带的,元命令总是以“.”开头,而扩展命令是外部加入的,总是以感叹号“!”开 ...

  3. 为YUM设置代理的方法

    http://momo-fedora.blog.163.com/blog/static/1161345982009329611312/

  4. 深入GDI图像显示

    摘  要:本文首先给出了一种结合了DIB和DDB两种位图优点的图像显示方法,其次对GDI函数的高级应用,如透明位图显示.图像旋转显示.图像镜像显示进行了研究. 关键词:GDI图像显示,特殊GDI函数的 ...

  5. flex4 日期类型字符串转日期类型(string转Date)(转)

    mysql数据库中存储的日期类型通过PHP返回到flex端为字符串类型,这样在flex中进行处理时就必须要将字符串转化为Date类型.如果仅仅是 "年/月/日" 的组合,而没有涉及 ...

  6. 柯南君:看大数据时代下的IT架构(6)消息队列之RabbitMQ--案例(Publish/Subscribe起航)

    二.Publish/Subscribe(发布/订阅)(using the Java Client) 为了说明这个模式,我们将构建一个简单的日志系统.它将包括两个项目: 第一个将发出日志消息 第二个将接 ...

  7. Codeforces 707D Persistent Bookcase(时间树)

    [题目链接] http://codeforces.com/problemset/problem/707/D [题目大意] 给出一个矩阵,要求满足如下操作,单个位置x|=1或者x&=0,一行的数 ...

  8. Google Play Services Library update and missing symbol @integer/google_play_services_version

    转自http://stackoverflow.com/questions/19843784/google-play-services-library-update-and-missing-symbol ...

  9. [Leetcode][Python]22: Generate Parentheses

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 22: Generate Parentheseshttps://oj.leet ...

  10. SQL学习之学会使用子查询

    1.SELECT语句是SQL的查询.我之前的随笔中所用的SELECT语句都是简单的查询,即从单个数据库表中检索数据的单条SELECT语句. 查询:任何SQL语句都是查询,但此术语一般指SELECT语句 ...