判断js数据类型的函数实例详解


Posted in Javascript onMay 23, 2019
function judgeType(change) {
    if (arguments.length == 0) {
      return '0';//无参数传入
    }
    if (change === null) {
      return 'null'
    }
    if (change === undefined && arguments.length > 0) {
      return 'undefined'
    }
    if (change instanceof Function) {
      return 'function'
    }
    if (change instanceof Array) {
      return 'arry'
    }
    if (change instanceof Number || typeof change == 'number') {
      return 'number'
    }
    if (change instanceof String || typeof change == 'string') {
      return 'string'
    }
    if (change instanceof Boolean || typeof change == 'boolean') {
      return 'boolean'
    }
  }

ps:下面看下js 判断各种数据类型

了解js的都知道, 有个typeof  用来判断各种数据类型,有两种写法:typeof   xxx   ,typeof(xxx)

       如下实例:

typeof  2   输出  number
    typeof  null  输出  object
    typeof  {}  输出  object
    typeof  []  输出  object
    typeof  (function(){})  输出 function 
    typeof  undefined     输出 undefined
    typeof  '222'         输出  string 
   typeof true          输出   boolean

    这里面包含了js里面的五种数据类型  number   string    boolean   undefined     object和函数类型 function

     看到这里你肯定会问了:我怎么去区分对象,数组和null呢?

     接下来我们就用到另外一个利器:Object.prototype.toString.call

     这是对象的一个原生原型扩展函数,用来更精确的区分数据类型。

     我们来试试这个玩儿意儿:

var  gettype=Object.prototype.toString
    gettype.call('aaaa')    输出   [object String]
    gettype.call(2222)     输出   [object Number]
    gettype.call(true)     输出   [object Boolean]
    gettype.call(undefined) 输出   [object Undefined]
    gettype.call(null)         输出  [object Null]
     gettype.call({})          输出  [object Object]
     gettype.call([])          输出  [object Array]
     gettype.call(function(){})   输出  [object Function]

      看到这里,刚才的问题我们解决了。

     constructor也能判断数据类型:

     如:

''.constructor==String   
      [].constructor==Array
      var obj= new Object()  
  obj.constructor==Object

      其实js 里面还有好多类型判断      [object HTMLDivElement]     div 对象  ,    [object HTMLBodyElement]  body 对象    ,[object Document](IE)或者  [object HTMLDocument](firefox,google) ......各种dom节点的判断,这些东西在我们写插件的时候都会用到。

     可以封装的方法如下  :

var  gettype=Object.prototype.toString
   var  utility={
     isObj:function(o){
        return  gettype.call(o)=="[object Object]";
     },
     isArray:function(o){
        return  gettype.call(o)=="[object Array]";
     },
     isNULL:function(o){
        return  gettype.call(o)=="[object Null]";
     },
     isDocument:function(){
         return  gettype.call(o)=="[object Document]"|| [object HTMLDocument];
     }
     ........
  }

    这个获取类型的方法有个简单的写法:

var Type = (function() {
        var type = {};
        var typeArr = ['String', 'Object', 'Number', 'Array','Undefined', 'Function', 'Null', 'Symbol'];
        for (var i = 0; i < typeArr.length; i++) {
          (function(name) {
            type['Is' + name] = function(obj) {
              return Object.prototype.toString.call(obj) == '[object ' + name + ']';
            }
          })(typeArr[i]);
        }
        return type;
})();

调用方法:Type.IsFunction(function() {})      Type.IsObject({})。。。。。

Type.Is.....

总结

以上所述是小编给大家介绍的判断js数据类型的函数实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
Code:loadScript( )加载js的功能函数
Feb 02 Javascript
用JavaScript 处理 URL 的两个函数代码
Aug 13 Javascript
jQuery 源码分析笔记(6) jQuery.data
Jun 08 Javascript
用Jquery实现滚动新闻
Feb 12 Javascript
禁止按回车键提交表单的方法
Jun 11 Javascript
深入学习jQuery Validate表单验证(二)
Jan 18 Javascript
javascript中不易分清的slice,splice和split三个函数
Mar 29 Javascript
js严格模式总结(分享)
Aug 22 Javascript
完美解决IE不支持Data.parse()的问题
Nov 24 Javascript
微信小程序换肤功能实现代码(思路详解)
Aug 25 Javascript
vue项目开启Gzip压缩和性能优化操作
Oct 26 Javascript
Ajax实现局部刷新的方法实例
Mar 31 Javascript
JS定义函数的几种常用方法小结
May 23 #Javascript
vue-test-utils初使用详解
May 23 #Javascript
了解前端理论:rscss和rsjs
May 23 #Javascript
微信小程序使用字体图标的方法
May 23 #Javascript
个人小程序接入支付解决方案
May 23 #Javascript
一篇文章介绍redux、react-redux、redux-saga总结
May 23 #Javascript
微信小程序上传图片到php服务器的方法
May 23 #Javascript
You might like
业余方法DIY电子管FM收音机
2021/03/02 无线电
一个odbc连mssql分页的类
2006/10/09 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
javascript 常用功能总结
2012/03/18 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
vue实现匀速轮播效果
2020/06/29 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
什么是python的自省
2020/06/21 Python
python函数超时自动退出的实操方法
2020/12/28 Python
涂鸦板简单实现 Html5编写属于自己的画画板
2016/07/05 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
什么是Linux虚拟文件系统VFS
2015/08/25 面试题
大学生暑期实践感言
2014/02/26 职场文书
《木笛》教学反思
2014/03/01 职场文书
活动总结新闻稿
2014/08/30 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
交通事故责任认定书
2015/08/06 职场文书
自荐信大全
2019/03/21 职场文书
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android