js获取变量的类型没有像PHP那样可以使用is_int,is_bool,is_string ..等等的函数判断,但实际应用中也有可能会用到。其实JS中也有这个功能,只是没有像PHP中方便,只要使用Object原型(prototype)的toString就可以完成这个功能。前段时间也看到JQuery内也使用了获取变量类型的操作,其思想一样,下面就以这段代码来分析,其实这个也没有什么特殊的强大派生功能,代码如下:
m = Object.prototype.toString //这个就是取出Object的原型prototype内的toString,整个功能的核心
E = {};//初始化对象
/*这段代码主要是给 E 循环添加所要的类型串,通过[]给对象添加属性,并且所有的都类型名转为小写保存在 E 中 (p 是JQuery对象)*/
p.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(a, b) {
E["[object " + b + "]"] = b.toLowerCase()
})
/* 判断类型的执行方法,前面的 String 可以直接转换 空(null在js里是一种数据类型,不等于'',false,0) 的变量,如果是其它的变量则可以通过Object原型内的toString来获取,但返回的内容都是 [object Number] 等字符串返回,当类型不存在时返回 object 。call的用法可能查看 js的call与apply 只要获取的类型串在 E 中有那么就可以返回 E 中指定的类型串*/
type: function(a) {
return a == null ? String(a) : E[m.call(a)] || "object"
}
可以看出整个核心代码就是 Object.prototype.toString.call(待取变量)
可能会想到为什么不是 Object.toString.call(待取变量)
但实际是这两种方法是不一个意思,所执行的方式也不是一样的,当然第二种方法是错误用法。prototype可以查看 js中的protorype原型
其实我们可以直接使用JQuery的type方法。当然必须引用JQuery文件才可以使用。在这个所拿出的代码是从(jQuery v@1.8.0)中抠取的,这段代码可还有一些类型不能判断,如 JSON 等。新版本的有。
转载于:https://blog.51cto.com/php2012web/1287117