js获取变量的类型没有像PHP那样可以使用is_int,is_bool,is_string ..等等的函数判断,但实际应用中也有可能会用到。其实JS中也有这个功能,只是没有像PHP中方便,只要使用Object原型(prototype)的toString就可以完成这个功能。前段时间也看到JQuery内也使用了获取变量类型的操作,其思想一样,下面就以这段代码来分析,其实这个也没有什么特殊的强大派生功能,代码如下:
m = Object.prototype.toString //这个就是取出Object的原型prototype内的toString,整个功能的核心
E = {};//初始化对象
p.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(a, b) {
E["[object " + b + "]"] = b.toLowerCase()
})
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 等。新版本的有。



