js获取或判断任意数据类类型的通用方法(getDataType)和将NodeList转为数组(NodeListToArray)
function getDataType(any)
{
/* (1) Object.prototype.toString.call 方法判断类型:
优点:通用,返回"[object String]" 具体object的类型
缺点:不能返回继承的类型
(2)typeof x
缺点:对object类型不能细分;
优点:对空null的判断 'undefined'的应用;
返回类型有:'undefined' “string” 'number' 'boolean' 'function' 'object'
(3) instanceof 能返回具体的类型,只适用于用new关键字创建的对象进行判断
*/
// var baseType=["string","number","boolean"];//基本类型
// var refType=["object", "Function","Array","Date"];//引用类型
try
{
var dtype=Object.prototype.toString.call(any);
if(dtype=="[object Object]") //IE,某个dom元素对象
{
try
{
if(any.constructor)
{
var constructorStr=any.constructor.toString(); //obj.constructor可以返回继承的类型
if(constructorStr.indexOf("Array")!=-1) { dtype="[object Array]"; }
else
if(constructorStr.indexOf("HTMLCollection")!=-1) { /* IE */ dtype="[object NodeList]"; }
else
if((constructorStr.indexOf("function")!=-1) && (constructorStr.indexOf("Object()")!=-1))
{
dtype="[object Object]";
}
else
dtype=constructorStr;
}
}
catch(e)
{
return "[object Null]";
}
}
else
{
if(dtype=="[object HTMLCollection]") { /* FF */ dtype="[object NodeList]"; }
}
return dtype;
}catch(e)
{
return "variable is not defined.";
}
}
//将NodeList转为数组,使NodeList可以使用数组的全部方法
function NodeListToArray(nodes) {
var array = null;
try{
array = Array.prototype.slice.call(nodes,0);
}catch(ex){
array = new Array();
for(var i = 0,len = nodes.length;i < len;i++) {
array.push(nodes[i]);
}
}
return array;
}
/* //测试 getDataType 方法
var aa=null;
alert(getDataType(aa));
var abc;
alert(getDataType(abc)); //[object Undefined] 说明此变量已经声明,但尚未被初始化
var fn=function(){}
alert(getDataType(fn)); //[object Function]
alert(getDataType(new Object())); //[object Object]
alert(getDataType("Hello"));//[object String]
alert(getDataType(234));//[object Number]
alert(getDataType(true));//[object Boolean]
alert(getDataType(new Date())); //[object Date]
alert(getDataType(new Date().getTime())); //[object Number]
alert(getDataType(document.getElementById("demopic"))); //[object HTMLDivElement]
var nodelist=NodeListToArray(document.getElementsByTagName("*"));
alert(getDataType(nodelist)); //[object Array]
alert(getDataType(document.getElementsByTagName("*"))); //[object NodeList)]
//alert(nodelist[10].tagName);
alert(getDataType(/[a-z]/)); //[object RegExp]
*/
js获取或判断任意数据类类型的通用方法(getDataType)和将NodeList转为数组(NodeListToArray)的更多相关文章
- js获取及判断键盘按键的方法
这篇文章主要介绍了js获取及判断键盘按键的方法,涉及JavaScript键盘事件的获取及键值的判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了js获取及判断键盘按键的方法.分享 ...
- Token验证的流程及如何准确的判断一个数据的类型
Token验证的流程: 1,客户端使用用户名跟密码请求登录:2,服务端收到请求,去验证用户名与密码:3,验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端:4,客户端收到 T ...
- Js获取后台集合List的值和下标的方法
Js获取后台集合List的值和下标的方法 转载自:http://blog.csdn.net/XiaoKanZheShiJie/article/details/47280449 首先用的是struts2 ...
- JS获取form表单数据
以下代码可放在一个js文件中,以便通用: //获取指定表单中指定标签对象 function getElements(formId, label) { var form = document.getEl ...
- html中通过js获取接口JSON格式数据解析以及跨域问题
前言:本人自学前端开发,一直想研究下js获取接口数据在html的实现,顺利地找到了获取数据的方法,但是有部分接口在调用中出现无法展示数据.经查,发现时跨域的问题,花费了一通时间,随笔记录下过程,以方便 ...
- js获取及判断按键的方法
js 里面的键盘事件经常用到,所以收集了键盘事件对应的键码来分享下: keyCode 8 = BackSpace BackSpace keyCode 9 = Tab Tab keyCode 12 = ...
- JS获取到时间转换成字符串类型
JS获取到时间格式为:/Date(1479279579047)/ 提供一个函数可将其转换为“yyyy-MM-dd”和“yyyy-MM-dd hh:mm:ss” //时间日期转换成string func ...
- js获取异步方法里面的数据
这里介绍 五种方法(说白了本质 就三种) 1.callback回调函数 function getData(callback){ setTimeout(()=>{ let name = '哈哈 ...
- js获取上一页、当前页及域名url方法,JS反回上一页的方法
<html> <head> <title>js获取上一页url,js获取前一页地址,javascripts获取上一页url,javascript获取前一页地址< ...
随机推荐
- WF4.0 基础篇 (一)开始使用WF
来源:https://www.cnblogs.com/caosenianhuan/p/WF.html 最近公司要重新上线一套新的CRM系统,要重整老系统里的业务流模块,团队讨论已微软的workflow ...
- Hadoop专业解决方案-第12章 为Hadoop应用构建企业级的安全解决方案
一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,春节期间,项目进度有所延迟,不过元宵节以后大家已经步入正轨, 目前第12章 为Hadoop应用构 ...
- 关于Qt配置编译器的问题
PC系统:win10 安装了:Visual Studio 2017 Community ; Qt 5.8.0 运行Qt程序时,出现以下错误: 原因:来自知乎 只安装了VS2017(MSVC 15.0) ...
- 导入testng管理测试用例
1.在pom.xml中增加testng的依赖,以导入testNG 2.在src-main-resources目录下新建xml文件,比如untitled.xml. <?xml version=&q ...
- shell 13文件包含
同其他语言一样,shell也可以包含外部脚本.执行引用脚本可以使用source或 . 示例1 test.sh #shell #!/bin/sh echo "test.sh开始执行" ...
- 1061 Dating (20 分)
1061 Dating (20 分) Sherlock Holmes received a note with some strange strings: Let's date! 3485djDkxh ...
- 长沙雅礼中学集训-------------------day1(内含day0)
day0: 首先,请允许我吐槽一下: 1.那些一个人住一个标准房的人您们真的是#@**¥&%……#*()%……*()@Q$&. 2.感谢那些一个人住一个标准间的人,要不然我们也找不到这 ...
- 并发工具类(一)等待多线程的CountDownLatch
前言 JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Ph ...
- uva-10047
我们考虑一个特殊情况,一个独轮车是一个圆环,独轮车靠这个圆环运动,这个圆环上涂有五个不同的颜色,如下图每个颜色段的圆心角是72度,这个圆环在MxN个方格的棋盘上运动,独轮车从棋盘中一个格子的中心点开始 ...
- linux双网卡绑定实现冗余与负载均衡
1 编辑/etc/modprobe.conf 在/etc/modprobe.conf里加入如下两行: alias bond0 bonding options bond0 mode=1 miimon ...