判断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 相关文章推荐
javascript add event remove event
Apr 07 Javascript
asp.net HttpHandler实现图片防盗链
Nov 09 Javascript
jquery getScript动态加载JS方法改进详解
Nov 15 Javascript
JS操作Cookies包括(读取添加与删除)
Dec 26 Javascript
解决jquery1.9不支持browser对象的问题
Nov 13 Javascript
JS判断不能为空实例代码
Nov 26 Javascript
使用js实现一个可编辑的select下拉列表
Feb 20 Javascript
js实现图片点击左右轮播
Jul 08 Javascript
使用jquery动态加载Js文件和Css文件
Oct 24 Javascript
浅谈js中的变量名和函数名重名
Feb 13 Javascript
微信小程序页面滑动屏幕加载数据效果
Nov 16 Javascript
详解如何优雅地在React项目中使用Redux
Dec 28 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
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
PHP小教程之实现链表
2014/06/09 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
js left,right,mid函数
2008/06/10 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
js实现简单的手风琴效果
2017/02/27 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
浅谈Python中数据解析
2015/05/05 Python
Python pickle模块用法实例分析
2015/05/27 Python
Python 自动刷博客浏览量实例代码
2017/06/14 Python
Python collections模块使用方法详解
2019/08/28 Python
Python偏函数实现原理及应用
2020/11/20 Python
Python爬虫开发与项目实战
2020/12/16 Python
CSS3绘制六边形的简单实现
2016/08/25 HTML / CSS
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
个人务虚会发言材料
2014/10/20 职场文书
关于环保的广播稿
2015/12/17 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
python使用pygame创建精灵Sprite
2021/04/06 Python
如何用JS实现简单的数据监听
2021/05/06 Javascript
python-for x in range的用法(注意要点、细节)
2021/05/10 Python