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. Group Commit of Binary Log

    160222 09:19:26 mysqld_safe Starting mysqld daemon with databases from /data01/mysql 2016-02-22 09:1 ...

  2. java实现二维码生成的几个方法

    1: 使用SwetakeQRCode在Java项目中生成二维码 http://swetake.com/qr/ 下载地址 或着http://sourceforge.jp/projects/qrcode/ ...

  3. CodeForces 135C C. Zero-One

    题目 题意: 一个01串,AB两个人轮流删去一个字符,直到只剩两个,A先手.最后剩的两位组成一个二进制数,A要使其最小,B要使其最大. 有一些部分不知道原来是什么,用?表示,求所有的可能里,最后剩下的 ...

  4. HDU 3468 Treasure Hunting(BFS+网络流之最大流)

    题目地址:HDU 3468 这道题的关键在于能想到用网络流.然后还要想到用bfs来标记最短路中的点. 首先标记方法是,对每个集合点跑一次bfs,记录全部点到该点的最短距离.然后对于随意一对起始点来说, ...

  5. sqlite学习笔记4:表的创建和删除

    前面做了那么多不就是为了数据弄几张表么.接下来看看怎么新建表. 一 新建表 基本的语法例如以下: CREATE TABLE database_name.table_name( column1 data ...

  6. 翻转View

    翻转View by 伍雪颖 CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil cont ...

  7. HTML之学习笔记(六)添加链接

    html添加链接所用的标签为<a>标签 语法: 定义:从当前页面,跳转到指定页面或文件的一个标签            <a href="URL">热点文字 ...

  8. 53个Oracle语句优化规则详解(转)

    Oracle sql 性能优化调整  1. 选用适合的ORACLE优化器        ORACLE的优化器共有3种:a. RULE (基于规则)   b. COST (基于成本) c. CHOOSE ...

  9. Codility 1: equilibrium

    提交了格灵深瞳的简历后,收到需要先进行一个简单的技术测试的通知,临时抱佛脚,先刷刷上面几道题: 题目要求 A zero-indexed array A consisting of N integers ...

  10. SGU题目总结

    SGU还是个不错的题库...但是貌似水题也挺多的..有些题想出解法但是不想写代码, 就写在这里吧...不排除是我想简单想错了, 假如哪位神犇哪天发现请告诉我.. 101.Domino(2015.12. ...