当前位置: 首页 > news >正文

js 判断各种数据类型 typeof 几种类型值

了解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]

      看到这里,刚才的问题我们解决了。 它还可以判断document , body 等等,继续看下面

 jquery下面也有一个判断类型的如下:

  • jQuery.type(true) === "boolean"
  • jQuery.type(3) === "number"
  • jQuery.type("test") === "string"
  • jQuery.type(function(){}) === "function"
  • jQuery.type([]) === "array"
  • jQuery.type(new Date()) === "date"
  • jQuery.type(/test/) === "regexp"

 

 

 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];

          }

          ........

    }

转载于:https://www.cnblogs.com/chaoyuehedy/p/7885277.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何下载最新版本和旧版本的eclipse?
  • LVS_DR 安装后无法转发真实服务器,但是配置其他方面都检查的没有问题了。就剩在realserver这边没有在lo口上绑定VIP了...
  • 各种排序算法思想复杂度及其java程序实现
  • 14章 变宽度网页布局剖析于制作
  • 实训之压缩软件
  • HighCharts 特性;Highcharts 环境配置
  • Django - Python3 常用命令
  • 新手对Spring的图解和一点个人理解
  • 项目整体管理
  • 用JDK自带的包来解析XML文件(DOM+xpath)
  • python学习笔记——Day 4
  • 构建自己的知识认知体系
  • LVM
  • 有什么可以免费pdf编辑软件吗
  • bzoj 1022 小约翰的游戏John
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • es6
  • 翻译:Hystrix - How To Use
  • 关于springcloud Gateway中的限流
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 后端_MYSQL
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 实现简单的正则表达式引擎
  • 算法---两个栈实现一个队列
  • 应用生命周期终极 DevOps 工具包
  • 用Python写一份独特的元宵节祝福
  • 从如何停掉 Promise 链说起
  • #Z2294. 打印树的直径
  • #前后端分离# 头条发布系统
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (Python) SOAP Web Service (HTTP POST)
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二) 初入MySQL 【数据库管理】
  • (回溯) LeetCode 78. 子集
  • (七)Java对象在Hibernate持久化层的状态
  • (新)网络工程师考点串讲与真题详解
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)创业家杂志:UCWEB天使第一步
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • *上位机的定义
  • .NET C# 操作Neo4j图数据库
  • .NET MVC之AOP
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NetCore部署微服务(二)
  • .NET处理HTTP请求
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • @ResponseBody
  • [000-01-022].第06节:RabbitMQ中的交换机介绍
  • [Android Pro] AndroidX重构和映射
  • [android] 看博客学习hashCode()和equals()
  • [Android]Android开发入门之HelloWorld