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. php实现Facebook风格的 time ago函数

    php实现Facebook风格的 time ago函数 非常好用,只要把里面的英文替换成中文就行了 英文函数代码如下: <?php function nicetime($date) { if(e ...

  2. 禁止Grid、TreeGrid列排序和列菜单

    Ext的Grid和Treegrid默认提供列菜单的功能,在列菜单中可以进行排序以及控制列显示状态. 在实际项目中,往往有些列是不需要用户看到的,因此就必须屏蔽列菜单的功能. 1.屏蔽Grid,包括Ed ...

  3. gem install redis报错解决

    在执行gem install redis时 提示:    gem install redis    ERROR:  Error installing redis:            redis r ...

  4. Bezier画线算法

    编译器:VS2013 描述:Bezier画线是利用导数相同拼接曲线,使曲线十分光滑,而不是随意拼接观赏性很差 主函数段 #include "stdafx.h" #include&l ...

  5. MySQL优化技巧之四:mysql数据库开发常见问题及优化[转]

    mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的 ...

  6. Valgrind memcheck 8种错误实例

    调不尽的内存泄漏,用不完的Valgrind Valgrind 安装 1. 到www.valgrind.org下载最新版valgrind-3.2.3.tar.bz2 2. 解压安装包:tar –jxvf ...

  7. 1115 Counting Nodes in a BST (30 分)

    1115 Counting Nodes in a BST (30 分) A Binary Search Tree (BST) is recursively defined as a binary tr ...

  8. 1009 Product of Polynomials (25 分)

    1009 Product of Polynomials (25 分) This time, you are supposed to find A×B where A and B are two pol ...

  9. python logging 日志模块的配置和使用

    import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(line ...

  10. Windows 8的用户模式Shim Engine小探及利用

    转载: https://bbs.pediy.com/thread-175483.htm Windows Shim Engine,即Windows 兼容性模式实现引擎,在exe文件的属性对话框中有一个兼 ...