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)的更多相关文章

  1. js获取及判断键盘按键的方法

    这篇文章主要介绍了js获取及判断键盘按键的方法,涉及JavaScript键盘事件的获取及键值的判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下   本文实例讲述了js获取及判断键盘按键的方法.分享 ...

  2. Token验证的流程及如何准确的判断一个数据的类型

    Token验证的流程: 1,客户端使用用户名跟密码请求登录:2,服务端收到请求,去验证用户名与密码:3,验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端:4,客户端收到 T ...

  3. Js获取后台集合List的值和下标的方法

    Js获取后台集合List的值和下标的方法 转载自:http://blog.csdn.net/XiaoKanZheShiJie/article/details/47280449 首先用的是struts2 ...

  4. JS获取form表单数据

    以下代码可放在一个js文件中,以便通用: //获取指定表单中指定标签对象 function getElements(formId, label) { var form = document.getEl ...

  5. html中通过js获取接口JSON格式数据解析以及跨域问题

    前言:本人自学前端开发,一直想研究下js获取接口数据在html的实现,顺利地找到了获取数据的方法,但是有部分接口在调用中出现无法展示数据.经查,发现时跨域的问题,花费了一通时间,随笔记录下过程,以方便 ...

  6. js获取及判断按键的方法

    js 里面的键盘事件经常用到,所以收集了键盘事件对应的键码来分享下: keyCode 8 = BackSpace BackSpace keyCode 9 = Tab Tab keyCode 12 = ...

  7. JS获取到时间转换成字符串类型

    JS获取到时间格式为:/Date(1479279579047)/ 提供一个函数可将其转换为“yyyy-MM-dd”和“yyyy-MM-dd hh:mm:ss” //时间日期转换成string func ...

  8. js获取异步方法里面的数据

    这里介绍  五种方法(说白了本质 就三种) 1.callback回调函数  function getData(callback){ setTimeout(()=>{ let name = '哈哈 ...

  9. js获取上一页、当前页及域名url方法,JS反回上一页的方法

    <html> <head> <title>js获取上一页url,js获取前一页地址,javascripts获取上一页url,javascript获取前一页地址< ...

随机推荐

  1. WF4.0 基础篇 (一)开始使用WF

    来源:https://www.cnblogs.com/caosenianhuan/p/WF.html 最近公司要重新上线一套新的CRM系统,要重整老系统里的业务流模块,团队讨论已微软的workflow ...

  2. Hadoop专业解决方案-第12章 为Hadoop应用构建企业级的安全解决方案

    一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,春节期间,项目进度有所延迟,不过元宵节以后大家已经步入正轨, 目前第12章 为Hadoop应用构 ...

  3. 关于Qt配置编译器的问题

    PC系统:win10 安装了:Visual Studio 2017 Community ; Qt 5.8.0 运行Qt程序时,出现以下错误: 原因:来自知乎 只安装了VS2017(MSVC 15.0) ...

  4. 导入testng管理测试用例

    1.在pom.xml中增加testng的依赖,以导入testNG 2.在src-main-resources目录下新建xml文件,比如untitled.xml. <?xml version=&q ...

  5. shell 13文件包含

    同其他语言一样,shell也可以包含外部脚本.执行引用脚本可以使用source或 . 示例1 test.sh #shell #!/bin/sh echo "test.sh开始执行" ...

  6. 1061 Dating (20 分)

    1061 Dating (20 分) Sherlock Holmes received a note with some strange strings: Let's date! 3485djDkxh ...

  7. 长沙雅礼中学集训-------------------day1(内含day0)

    day0: 首先,请允许我吐槽一下: 1.那些一个人住一个标准房的人您们真的是#@**¥&%……#*()%……*()@Q$&. 2.感谢那些一个人住一个标准间的人,要不然我们也找不到这 ...

  8. 并发工具类(一)等待多线程的CountDownLatch

    前言   JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Ph ...

  9. uva-10047

    我们考虑一个特殊情况,一个独轮车是一个圆环,独轮车靠这个圆环运动,这个圆环上涂有五个不同的颜色,如下图每个颜色段的圆心角是72度,这个圆环在MxN个方格的棋盘上运动,独轮车从棋盘中一个格子的中心点开始 ...

  10. linux双网卡绑定实现冗余与负载均衡

    1 编辑/etc/modprobe.conf   在/etc/modprobe.conf里加入如下两行: alias bond0 bonding options bond0 mode=1 miimon ...