自己实现的typeOf函数:返回传入参数的类型

主要用于解决,js自带的typeof返回结果不精确;Ext JS中typeOf对字符串对象、元素节点、文本节点、空白文本节点判断并不准确的问题

js代码如下:

 /**
返回传入参数的类型
*/
function typeOf(value){
//数据类型判断
if(value===null){
return 'null';
}
//数据类型判断
var type = typeof value;
if(type=='undefined'||type=='string'||type=='number'||
type=='boolean'||type=='function'){
return type;
}
//数据类型判断
var stringType = Object.prototype.toString.call(value);
switch(stringType){
case "[object String]": return 'string';
case "[object Number]": return 'number';
case "[object Boolean]": return 'boolean';
case "[object Date]": return 'date';
case "[object Array]": return 'array';
case "[object RegExp]": return 'regexp';
case "[object Object]": return 'object';
}
//节点类型判断(可扩展)
var nodeType = value.nodeType;
if(nodeType!='undefined'){
if(nodeType==1){//元素节点
return 'element';
}
if(nodeType==2){//属性节点
return 'attribute';
}
if(nodeType==3){//文本节点
if(/\S/.test(value.nodeValue)){//节点值包含非空白字符
return 'textnode';//非空白文本节点
}
return 'whitespace'//空白文本节点
}
}
//其它的统一识别为'object'
return type;//'object'
}

测试HTML代码如下:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="UTF-8">
<title>typeof</title>
<script type="text/javascript" src="./js/TypeOf0.js"></script>
<script type="text/javascript">
window.onload = _pageLoaded; /**
* 页面加载完毕后执行的函数
* @private
*/
function _pageLoaded(){
console.info(typeOf(new String('123')));
console.info(typeOf(function(){}));
console.info(typeOf(document.getElementById('table1')));
console.info(typeOf(document.getElementById('table1').getAttributeNode('id')));
console.info(typeOf(document.getElementById('node1').firstChild));
console.info(typeOf(document.getElementById('node2').firstChild));
var obj = {name:'pine'};
console.info(typeOf(obj));
console.info(typeOf(document));
var _obj = {nodeType:1};
console.info(typeOf(_obj));
}
</script>
</head>
<body>
<table id="table1">
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
<span id="node1">测试文本~~~</span>
<span id="node2"> </span>
</body>
</html>

自己实现的typeOf函数1的更多相关文章

  1. 重写Ext中的typeOf函数

    重写Ext中的typeOf函数来解决Ext JS中typeOf对字符串对象.元素节点.文本节点.空白文本节点判断并不准确的问题 重写的typeOf函数使用自己实现的TypeOf函数2中的代码 测试代码 ...

  2. 自己实现的TypeOf函数2

    自己实现的typeOf函数:返回传入参数的类型 主要用于解决,js自带的typeof返回结果不精确:Ext JS中typeOf对字符串对象.元素节点.文本节点.空白文本节点判断并不准确的问题 与上一篇 ...

  3. SASS type-of 函数

    今儿写个type-of,算是备忘录吧. 1.number type-of(0) // number type-of(1px) // number 2.string type-of(a) // stri ...

  4. Sass函数:Introspection 函数 -type-of()

    type-of() 函数主要用来判断一个值是属于什么类型: 返回值: number 为数值型. string 为字符串型. bool 为布尔型. color 为颜色型. >> type-o ...

  5. PB函数大全

    PB函数大全 Abs()功能计算绝对值.语法Abs ( n )参数n:要得到绝对值的数值型变量或表达式返回值返回值的数据类型与n的数据类型相同,函数执行成功时返回n的绝对值.如果参数n的值为NULL, ...

  6. Sass中常用的函数

    字符串函数 To-upper-case() 函数将字符串小写字母转换成大写字母 To-lower-case() 函数 与 To-upper-case() 刚好相反,将字符串转换成小写字母 数字函数 S ...

  7. Sass函数--列表函数

    列表函数简介 列表函数主要包括一些对列表参数的函数使用,主要包括以下几种: length($list):返回一个列表的长度值: nth($list, $n):返回一个列表中指定的某个标签值  join ...

  8. 4、js内置函数

    前言:上一篇我介绍了函数的基本概念,和一些简单的Demo.其实很多函数是js内置的,我们无需自己去写,直接拿过来用即可.内置函数分为全局函数和js内置对象的函数区别:全局函数不属于任何一个内置对象.理 ...

  9. Ext JS中的typeOf

    Ext JS中的typeOf:以字符串格式,返回给定变量的类型 其中对字符串对象.元素节点.文本节点.空白文本节点判断并不准确 测试代码如下: <!DOCTYPE HTML PUBLIC &qu ...

随机推荐

  1. JAVA匿名内部类(Anonymous Classes)

    1.前言 匿名内部类在我们JAVA程序员的日常工作中经常要用到,但是很多时候也只是照本宣科地用,虽然也在用,但往往忽略了以下几点:为什么能这么用?匿名内部类的语法是怎样的?有哪些限制?因此,最近,我在 ...

  2. JavaScript 原型的深入指南

    摘要: 理解prototype. 原文:JavaScript 原型的深入指南 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 不学会怎么处理对象,你在 JavaScript 道路就就走 ...

  3. 如何通过免费开源ERP Odoo建立你的团队, 销售过程和目标

    这种快速的一步一步的指南将引导您完成Odoo CRM, 帮助您轻松处理您的销售渠道, 时刻从线索到客户管理您的销售渠道. 配置 从 Odoo初始化后,生成你的数据库, 选择CRM 作为第一个app安装 ...

  4. The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

    使用EF时,在Limda表达式中( query.Where(x => x.CheckInDate >= bd.Date);)查询的时候抛出了这个异常,网上查到的发现,并不能解决问题. 后来 ...

  5. BI基础知识

  6. Windows Server 2016-Hyper-V HNV 新增功能

    本内容主要介绍了Hyper-V 网络虚拟化 (HNV) 功能在 Windows Server 2016 中的新增或更改内容,具体信息如下: HNV更新 功能中的功能 新的或改进 描述 可编程 Hype ...

  7. 20190415 - iOS11 无法连接到 App Store 的解决办法

    问题:更新 iOS 11 后,打开 App Store 提示: 无法连接至 app store 解决: 进入 iOS 系统[设置][iTunes Store 与 App Store],退出当前登录用户 ...

  8. [LeetCode] 26. 删除排序数组中的重复项

    题目链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/ 题目描述: 给定一个排序数组,你需要在原地删除重复 ...

  9. JS-JSON知识点总结

    一.JSON的2个重要方法:JSON.stringify(),JSON.parse() //json转字符串:JSON.stringify() let myJson = { name: 'lizhao ...

  10. ASP.NET Aries 高级开发教程:使用存储过程(番外篇)

    前言: 发现这个问题,有不少人提起过,所以就简单写成文章吧. 接下来看如何在Aries 框架中使用存储过程,整体步骤和绑定普通视图差不多. 步骤一:新建一个空视图. 可以在SqlCode管理中,创建一 ...