JS判断对象类型
对于确定JS内置对象类型,JS提供了typeof运算符,该运算符得到的结果为以下6种:number,boolean,string,function,object,undefined.不过对绝大多数对象而言,typeof都返回"object",无法确定具体的类型。我们使用一种函数Object.prototype.toString.call来判断
<script>
var a = 1;
console.log("a:"+typeof a); //number
console.log("a:"+Object.prototype.toString.call(a)); //[object Number]
var b = NaN;
console.log("b:"+typeof b); //number
console.log("b:"+Object.prototype.toString.call(b)); //[object Number]
var c= Number.MIN_VALUE;
console.log("c:"+typeof c); //number
console.log("c:"+Object.prototype.toString.call(c)); //[object Number]
var d= Infinity;
console.log("d:"+typeof d); //number
console.log("d:"+Object.prototype.toString.call(d)); //[object Number]
var e= "pmx";
console.log("e:"+typeof e); //string
console.log("e:"+Object.prototype.toString.call(e)); //[object String]
var f= true;
console.log("f:"+typeof f); //boolean
console.log("f:"+Object.prototype.toString.call(f)); //[object Boolean]
var g= window;
console.log("g:"+typeof g); //object
console.log("g:"+Object.prototype.toString.call(g)); //[object Window]
var h = [1];
console.log("h:"+typeof h); //object
console.log("h:"+Object.prototype.toString.call(h)); //[object Array]
var i = function(){};
console.log("i:" + typeof i); //function
console.log("i:"+Object.prototype.toString.call(i)); //[object Function]
var j = document;
console.log("j:" + typeof j); //object
console.log("j:"+Object.prototype.toString.call(j)); //[object HTMLDocument]
var k = null;
console.log("k:" + typeof k); //object
console.log("k:"+Object.prototype.toString.call(k)); //[object Null]
var l = undefined;
console.log("l:" + typeof l); //undefined
console.log("l:"+Object.prototype.toString.call(l)); //[object Undefined]
var m = eval;
console.log("m:" + typeof m); //function
console.log("m:"+Object.prototype.toString.call(m)); //[object Function]
var n = new Date();
console.log("n:" + typeof n); //object
console.log("n:"+Object.prototype.toString.call(n)); //[object Date]
</script>
将Object.prototype.toString.call的返回值处理下,使得更直观
var Adsame =function(){
};
Adsame.prototype.whichType = function(){
var class2type = {};
var types = "Boolean Number String Function Array Date RegExp Object Error Undefined Null";
types = types.split(" ");
for(var i = 0; i<types.length; i++){
class2type["[object "+types[i]+"]"] = types[i].toLowerCase();
}
var params = arguments;
var params_len = params.length;
var param_arr = Array.prototype.slice.call(params);
var result = [] ;
for(var k = 0; k<params_len; k++){
var type = Object.prototype.toString.call(param_arr[k]);
result.push(class2type[type]);
}
return result.length ? result: "undefined" ;
}
JS中还有个类似的运算符instanceof,它是用来判断某个对象是否是某类型的实例
<script>
var a = function(){}
console.log(a instanceof Object);//true
var b = 1;
console.log(b instanceof Object);//false
var c = "1";
console.log(c instanceof Object);//false
var d = true;
console.log(d instanceof Object);//false
var e = undefined;
console.log(e instanceof Object);//false
var f = null;
console.log(f instanceof Object);//false
var g = [1];
console.log(g instanceof Object);//true
var h = window;
console.log(h instanceof Object);//gte IE 9:true,lt IE 9:false
</script>
可以看到,JS中的5中基本类型number,string,boolean,undefined,null并不是Object的实例。
对于低版本的浏览器认为window对象是dom里面的属性,和JS对象是两码事
JS判断对象类型的更多相关文章
- js 判断对象类型
在企业级的开发中,我们常用 typeof 来判断企业 对象类型:但是 typeof 不能判断 Array 和 null 这里我们使用一个 原型上的 toString方法:请看一下代码: <scr ...
- html5 -js判断undefined类型
js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断 var reVal ...
- js判断浏览器类型 js判断ie6不执行
js判断浏览器类型 $.browser 对象 $.browser.version 浏览器版本 var binfo = ''; if ($.browser.msie) { binfo = " ...
- js判断undefined类型,undefined,null,NaN的区别
js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined 所以自作聪明判断 ...
- js验证对象类型
js验证对象类型 1. Object.prototype.toString.call() 这是最佳解决方案,可以用作通用方式处理.各种类型的判断依据类似于[object Object],替换的是后边的 ...
- js判断undefined类型,undefined,null, 的区别详细解析
js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断 var reVal ...
- js判断undefined类型
js判断undefined类型 if (reValue== undefined){ alert("undefined"); } 发现判断不出来,最后查了下资料要用ty ...
- Js判断对象是否为空,Js判断字符串是否为空
Js判断对象是否为空,Js判断字符串是否为空,JS检查字符串是否为空字符串 >>>>>>>>>>>>>>>&g ...
- 通过JS判断联网类型和连接状态
通过JS判断联网类型和连接状态 中国的移动网络环境复杂,为了给用户带去更好访问体验,开发者希望能了解用户当前的联网方式,然后给用户一个符合当前网络环境的请求结果. W3C的规范中给出了一个方法来获得现 ...
随机推荐
- POJ 3286 How many 0's?(数位DP)
题目链接 终于过了,边界让我wa了好几次,猥琐的用AC代码对拍,很无奈,用非常麻烦的方法.写一下,估计以后再碰到,肯定看不懂这是写的什么了. 以前做过,统计1和2的,统计0比1和2麻烦多了,有前导0的 ...
- UVA 10325 - The Lottery(容斥)
以前做过的一个题,忘记/gcd了,看来需要把以前的东西看一下啊. #include <cstdio> #include <cstring> #include <iostr ...
- hdu Train Problem I
这道题是道简单的栈模拟题,只要按照真实情况用栈进行模拟即可: #include<stdio.h> #include<string.h> #include<stack> ...
- 通过程序校验xml文档学习笔记
校验xml文档,可以通过程序来校验,利用一段js代码即可. 各行代码的含义已经写出,运行这个html文件,检验如下xml代码: 结果如下: 如果xml文档出现错误: 结果如下: 其中,obj.asyn ...
- Eclipse学习记录
设置背景色:http://jingyan.baidu.com/article/2a138328b5d9ea074a134fc7.html 项目文件说明:http://www.cnblogs.com/p ...
- Memcached 笔记与总结(3)安装 php-memcache(windows 系统下)
在 windows 下安装 php-memcache,需要下载编译好的 memcached.dll. 要找到可用的 dll 文件,需要根据 php.ini 中的 3 个参数来选择 dll 文件: ① ...
- Memcached 笔记与总结(2)编译 php-memcache 扩展
环境:CentOS 6.6 + Apache 2.2.21 + PHP 5.3.10 php-memcache 是 php 写的 memcached 的客户端,以扩展的形式发布. 对于正在运行的 ph ...
- Nginx 笔记与总结(11)Nginx + php-fpm + MySQL 安装 ecshop
下载 ecshop (ECShop_V2.7.3_UTF8_release1106)安装包,解压之后把 upload 文件夹使用 ftp 传到服务器的 /usr/local/html 目录下,同时改名 ...
- spring mvc超强的json支持,你自己根本不需要额外的配置。spring mvc都给你配置好了!!!
SpringMVC层跟JSon结合,几乎不需要做什么配置,代码实现也相当简洁.再也不用为了组装协议而劳烦辛苦了! 2.一.Spring注解@ResponseBody,@RequestBody和Http ...
- DirectX基础学习系列4 颜色和光照
4.1颜色表示 RGB颜色:D3DCOLOR 可以用宏D3DCOLOR_ARGB(a,r,g,b) D3DCOLOR_XRGB(255,r,g,b) 另外一种浮点表示:D3DCOLORVALUE, ...