javascript 的工具方法 --- 类型判断

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 的工具方法 --- 类型判断相关的知识,希望对你有一定的参考价值。

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 的工具方法 --- 类型判断的主要内容,如果未能解决你的问题,请参考以下文章

Java中对各种类型判空的最优解

打造自己的javascript库

java 字符串和对象判空

JavaScript 字符串判空

8.2.3 覆写 Equals

在c#中用arraylist创建的数组,在用contains查看是不是包含某一个对象时,判