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

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

与上一篇的主要区别是:将前2个数据类型判断统一合并到第3个数据类型判断里面

js代码如下:

 /**
返回传入参数的类型
*/
function typeOf(value){
//数据类型判断
var stringType = Object.prototype.toString.call(value);
switch(stringType){
case "[object Null]": return 'null';
case "[object Undefined]": return 'undefined';
case "[object String]": return 'string';
case "[object Number]": return 'number';
case "[object Boolean]": return 'boolean';
case "[object Function]": return 'function';
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 typeof value;//'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/TypeOf1.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函数2的更多相关文章

  1. 重写Ext中的typeOf函数

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

  2. 自己实现的typeOf函数1

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

  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. 我眼中的 Nginx(四):是什么让你的 Nginx 服务退出这么慢?

    张超:又拍云系统开发高级工程师,负责又拍云 CDN 平台相关组件的更新及维护.Github ID: tokers,活跃于 OpenResty 社区和 Nginx 邮件列表等开源社区,专注于服务端技术的 ...

  2. DownEditTextView【自定义Edittext对Android 软键盘向下的监听】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录自定义EditText控件实现监听软键盘隐藏事件的功能.基本上和参考资料相同. 效果图    代码分析 自定义EditText子 ...

  3. 【Java】几道常见的秋招面试题

    前言 只有光头才能变强 Redis目前还在看,今天来分享一下我在秋招看过(遇到)的一些面试题(相对比较常见的) 0.final关键字 简要说一下final关键字,final可以用来修饰什么? 这题我是 ...

  4. Vue.js 学习笔记 第3章 计算属性

    本篇目录: 3.1 什么是计算属性 3.2 计算属性用法 3.3 计算属性缓存 模板内容的表达式常用语简单的运算,当其过长或逻辑复杂时,会难以维护,本章的计算属性就是用于解决该问题的. 3.1 什么是 ...

  5. 2018-02-24 项目/教程中使用母语命名的"问题"

    早先试图找使用中文命名代码的项目, 但所获寥寥: 索引: 用中文编写代码的实用开源项目 · Issue #6 · program-in-chinese/overview. 更不用说教程了: 索引: 用 ...

  6. MPP-使用说明

    1.介绍 MPP是瑞芯微提供的媒体处理软件平台,适用于瑞芯微芯片系列.它屏蔽了有关芯片的复杂底层处理,屏蔽了不同芯片的差异,为使用者提供了统一的视频媒体统一接口. 具体提供的功能: 视频编码:H264 ...

  7. caffe安装教程(Ubuntu14+GPU+pycaffe+anaconda2)

    caffe安装教程 本文所使用的底层环境配置:cuda8.cudnn6.OpenCV2.4.5.anaconda2(Python2.7).如使用其他版本的环境,如cuda,可安装自己的版本,但须在相应 ...

  8. C语言ftell()函数

      ftell()函数返回指定流的当前文件指针的位置.在文件末尾移动文件指针后,我们可以使用ftell()函数获取文件的总大小.可以使用SEEK_END常量来将文件指针移动文件末尾. ftell()函 ...

  9. python接口自动化(三)--如何设计接口测试用例(详解)

    简介 上篇我们已经介绍了什么是接口测试和接口测试的意义.在开始接口测试之前,我们来想一下,如何进行接口测试的准备工作.或者说,接口测试的流程是什么?有些人就很好奇,接口测试要流程干嘛?不就是拿着接口文 ...

  10. .NET Core微服务之基于Exceptionless实现分布式日志记录

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Exceptionless极简介绍 Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,AS ...