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的规范中给出了一个方法来获得现 ...
随机推荐
- Jexus & Mono 迁移
具体案例: 问: 这个是现在微信公共平台的进三月请求数合计 如果迁移到 Mono & Jexus 需要注意那些? 因为微信需要的是5秒响应,服务号存在时段高峰值,在峰值上,一台服务器能否 ...
- 【TYVJ】1463 - 智商问题(二分/分块)
http://tyvj.cn/Problem_Show.aspx?id=1463 二分的话是水题啊.. 为了学分块还是来写这题吧.. 二分: #include <cstdio> #incl ...
- 用LinqPad查看Nhibernate生成的sql语句
使用Nhibernate开发一般都要对Nhibernate生成的sql语句进行查看及分析,查看Nhibernate生成的sql语句,可以使用NHProfiler和log4net.但NHProfiler ...
- iOS开发中常见的问题
1.重复调用2次loadView和viewDidLoad 最好不要在UIViewController的loadView方法中改变状态栏的可视性(比如状态栏由显示变为隐藏.或者由隐藏变为显示),因为 ...
- JavaScript - 时间函数
时间美化函数 /* 1.< 60s, 显示为“刚刚” 2.>= 1min && < 60 min, 显示与当前时间差“XX分钟前” 3.>= 60min &am ...
- 课堂Scrum站立会议演示
组名:连连看 组长:张政 组员:张金生.李权.武志远 时间:2016.10.13 20:20--20:40 会议内容: 已完成的内容: 1.选定编译语言,安装软件并配置环境,完成了游戏的基本模型. ...
- ps命令交叉编译
busybox中的ps命令是针对于嵌入式的,其中一些选项并不完整.因此需要将源码下载下来,进行交叉编译 官方下载地址 github下载地址 含有configure,我在此使用的是这个源码包,官方的包在 ...
- [ZZ] GTX760首测
再一次让AMD难做!NVIDIA新主力GTX760首测 1又见短板高端显卡,GTX760外观对比回顶部 [PConline评测]NVIDIA迅速的步伐真让人吃惊,短时间内拿出GTX780.GTX770 ...
- C#winform项目添加引用编译文件
打开opencv(Emgu for windows)样例,发现有带引用图标的文件 以前还真没见过这种用法,研究了一下: 1.项目版本信息文件内容及添加: 通过修改项目目录下的csproj(c shar ...
- Nutch相关框架视频教程--说明
PDF文档: Nutch大数据相关框架讲义.pdf Nutch1.7二次开发培训讲义.pdf Nutch1.7二次开发培训讲义之腾讯微博抓取分析 Nutch公开课从搜索引擎到网络爬虫 ======== ...