首页 > 其他分享 >JS判断变量的具体数据类型封装函数

JS判断变量的具体数据类型封装函数

时间:2023-11-16 18:15:25浏览次数:34  
标签:getType 封装 res object 数据类型 JS call typeof console

封装函数为:

//返回传入值的数据类型
function GetValueType(val) {
    var type = typeof val
    // object需要使用Object.prototype.toString.call判断
    if (type === 'object') {
        var typeStr = Object.prototype.toString.call(val)
        // 解析[object String]
        typeStr = typeStr.split(' ')[1]
        type = typeStr.substring(0, typeStr.length - 1)
    }
    return type
}

 

原理解释如下:

JS中的typeof方法可以查看数据的类型,如下:

复制代码
1 console.log(typeof 2); // number
2 console.log(typeof "2"); // string
3 console.log(typeof true); // boolean
4 console.log(typeof [2]); // object
5 console.log(typeof {name:2});// object
6 console.log(typeof function(){return 2});// function
7 console.log(typeof new Date());// object
8 console.log(typeof null); // object
9 console.log(typeof undefined);// undefined
复制代码

但typeof只能区分数字、字符串、布尔值、方法及undefined,其他的对象、数组、日期、null等均为object,还是没能区分开,

我们可以利用Object.prototype.toString.call实现。

复制代码
 1 var getType = Object.prototype.toString;
 2 var res = getType.call(2);
 3 res = getType.call("2");
 4 res = getType.call(true);
 5 res = getType.call([2]);
 6 res = getType.call({name:2});
 7 res = getType.call(function(){});
 8 res = getType.call(new Date());
 9 res = getType.call(null);
10 res = getType.call(undefined);
复制代码

输出结果依次为:

复制代码
1 [object Number]
2 [object String]
3 [object Boolean]
4 [object Array]
5 [object Object]
6 [object Function]
7 [object Date]
8 [object Null]
9 [object Undefined]
复制代码

这样就能具体区分JS中的数据类型了。

 

标签:getType,封装,res,object,数据类型,JS,call,typeof,console
From: https://www.cnblogs.com/itjeff/p/17836926.html

相关文章

  • 使用js添加按钮,vue页面 el-calendar 添加自定义按钮
    html代码:<divclass="schedule"><divclass="title">今日日程</div><divclass="allSchedule"><el-rowclass="addSchedule"type="flex"align="......
  • 微信小程序TypeScript请求封装(TS+request)
    目录结构-WxApp-api请求方式-index.ts统一输出api接口-base.ts环境判断-user对应数据请求-userApi.ts-utils-request.ts封装请求封装request首先,我们先搞w......
  • JS逆向实战26——某店ua模拟登陆
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!目标目标网站aHR0cHM6Ly9kLndlaWRpYW4uY29tL3dlaWRpYW4tcGMvbG9naW4=目标获取登录接口UA参数加密,U......
  • nodejs敲门
    前言node.js是在电脑上,给js一个可以脱离浏览器运行的环境。功能上像jdk,操作为命令行。现在演化为可以做web服务器使用,拥有许多成熟的项目和插件。本文简单讲讲它,以及它的两个小用途(TS和WebApi服务器)。谈不上入门,只能算是“敲门”。  安装:nodejs官网和中文网都可以下载安......
  • 修改/etc/docker/daemon.json中的log-opts配置发现无效 docker 限制日志大小
    https://colobu.com/2018/10/22/no-space-left-on-device-for-docker/在/etc/docker/daemon.json中修改或添加log-opts参数"log-driver":"json-file","log-opts":{"max-size":"50m","max-file":"3"}网上很......
  • 从头开始一个vtk.js项目
    从头开始一个vtk.js项目初始化项目mkdirmy-vtkjs-appcdmy-vtkjs-appnpminit安装@kitware/vtk.js依赖npminstall@kitware/vtk.js对于这个例子,我们将使用webpack来构建我们的应用程序。npminstall-Dwebpack-cliwebpackwebpack-dev-server项目脚手架我们......
  • 吉特日化MES & SQL Server中的数据类型
    一、整数数据类型1、bitbit数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes或No、True或False、On或Off.注意:很省空间的一种数据类型,如果能够满足需求应该尽量多用。每个TINYINT类型的数据占用1个字节的存储空间。bit值保存为1、0或......
  • php封装的curl请求方法
    get请求function curlGet($url, array $header = array(), $timeout = 5){    $ch = curl_init();//初始化    curl_setopt($ch, CURLOPT_URL, $url);//抓取指定网页    curl_setopt($ch, CURLOPT_HEADER, 0);//是否显示头信息,1显示,0不显示    ......
  • 使用js写一个音乐音谱图
    我们经常看到在听乐音的时候,会有音谱图随着音乐的节奏不断变化给人视觉上的享受,那么我们通过js来实现以下这个效果,下面是简单的效果图 首先我们需要有一个绘制音频的函数functiondraw(){//请求下一帧动画animationId=requestAnimationFrame(draw);//获取......
  • Vue3实战 - 第一章 node.js/npm安装、配置
    一、node.js 安装(windows)1、下载并安装nodehttps://nodejs.org/en安装到 D:\Java\nodes 路径2、配置环境变量检查是否安装成功3、配置全局包存放目录和缓存目录npmconfigsetprefix"D:\nodejs\node_global"npmconfigsetcache"D:\nodejs\node_cache"4、安......