JS-安全检测JavaScript基本数据类型和内置对象的方法
前言:在前端开发中经常会需要用到检测变量数据类型的需求,比如:判断一个变量是否为undefined或者null来进行下一步的操作,今天在阅读“编写高质量代码-改善JavaScript程序的188个建议”这本书的时候看到这个比较好的方法,在此小记一笔以备在以后的开发中使用。
1:如下所示是我编写的演示代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Index Page</title>
<script type="text/javascript">
/*
安全检测JavaScript基本数据类型和内置对象
@param:o表示检测的值
@return:返回字符串'undefined','number','boolean','string','function','regexp','array','date','error','object','null'
*/
function typeOf(o)
{
//获取Object对象默认的toString()方法的引用,因为要获取对象的class值的唯一方法是调用Object对象定义的默认toString()方法,不同对象都会预定义自己的toString()方法,转换的逻辑各不相同
var _toString=Object.prototype.toString;
//列举基本数据类型和内置对象类型,可以进一步补充该数组的检测数据类型范围
var _type= {
'undefined' : 'undefined',
'number' : 'number',
'boolean' : 'boolean',
'string' : 'string',
'[object Function]' : 'function',
'[object RegExp]' : 'regexp',
'[object Array]' : 'array',
'[object Date]' : 'date',
'[object Error]' : 'error'
}
//返回对应的数据类型或者内置对象的字符串表示
return _type[typeof o] || _type[_toString.call(o)] || (o ? 'object' : 'null');
}
/*
测试方法
*/
(function testTypeOf()
{
var obj={'name':'godtrue'},
num=1,
str='hello',
boo=true,
abs=Math.abs,
dat=new Date(),
arr=new Array(),
err=new Error(),
reg=new RegExp(); console.info(typeOf(obj));
console.info(typeOf(num));
console.info(typeOf(str));
console.info(typeOf(boo));
console.info(typeOf(abs));
console.info(typeOf(dat));
console.info(typeOf(arr));
console.info(typeOf(err));
console.info(typeOf(reg));
console.info(typeOf(null)); console.info('【author:godtrue】');
})(); </script>
</head>
<body bgcolor="AliceBlue" align="center">
<p style="color:red;">
注意:上述方法适用于JavaScript基本数据类型和内置对象,而对自定义对象是无效的。这是因为自定义对象被转换为字符串后,返回值是没有规律的,而且不同的浏览器的返回值也是不同的。因此,要检测费内置对象,只能够使用constructor属性和instaceof运算符来实现。
</p>
</body>
</html>
2:如下所示是演示代码的执行效果,以及注意事项

3:小结
代码中需要注意的地方已在注释中标明,代码整体上也非常简单就简简单单三句话,不过这个方法还是比较有用的,我相信在今后的项目中也会使用的到的。根据我以往的经验,判断一个对象或者变量“非空与否”,“定义未定义与否”是最为常见,此方法具有一定的通用性的,也可以根据自己的需要进行再扩展。
另外,昨天我突然间发现自己的博文,被有些网站私自的转载并且没有注明文章来自博客园,将作者的信息也全部的抹去了,这样我觉得不太好,虽然,我写博客的目的是为了记录自己的技术积累和感想,主要以备自己将来的使用,也非常乐意让其他需要者参看或转载,不过请尊重他人的劳动付出,至少标明一下文章的出处!
JS-安全检测JavaScript基本数据类型和内置对象的方法的更多相关文章
- JavaScript (内置对象及方法)
JavaScript中的对象分为3种:内置对象.浏览器对象.自定义对象 JavaScript 提供多个内置对象:Math/Array/Number/String/Boolean... 对象只是带有属性 ...
- 你不知道的JavaScript(五)内置对象模版
尽管JavaScript中有对象的概念,但一般我们并不说JavaScript是面向对象的编程语言,因为它不具备面向对象的一些最基本特征. 在c++/Java等这些面向对象的编程语言中,我们要定义一个对 ...
- javascript的优缺点和内置对象
1)优点:简单易用,与Java有类似的语法,可以使用任何文本编辑工具编写,只需要浏览器就可执行程序,并且事先不用编译,逐行执行,无需进行严格的变量声明,而且内置大量现成对象,编写少量程序可以完成目标: ...
- javaScript中Math内置对象基本方法入门
概念 Math 是javaScript的内置对象,包含了部分数学常数属性和数学函数方法. Math 不是一个函数对象,用户Number类型进行使用,不支持BigInt. Math 的所有属性与方法都是 ...
- JS高级——扩展内置对象的方法
基本概念 内置对象有很多,几个比较重要的:Math.String.Date.Array 基本使用 1.内置对象创建出来的对象使用的方法使用的其实都是内置对象的原型对象中的方法 (1)a并没有charA ...
- jsp内置对象的方法
JSP内置对象的方法:out:out.print();request:request对象主要用于出列客户端请求. 常用方法: String getParameter(String name) ...
- python 之 前端开发( JavaScript变量、数据类型、内置对象、运算符、流程控制、函数)
11.4 JavaScript 11.41 变量 1.声明变量的语法 // 1. 先声明后定义 var name; // 声明变量时无需指定类型,变量name可以接受任意类型 name= " ...
- JavaScript 核心参考教程 内置对象
这个标准基于 JavaScript (Netscape) 和 JScript (Microsoft).Netscape (Navigator 2.0) 的 Brendan Eich 发明了这门语言,从 ...
- javascript:面向对象和常见内置对象及操作
本文内容: 面向对象 常见内置对象及操作 首发日期:2018-05-11 面向对象: JavaScript 是面向对象的编程语言 (OOP).OOP 语言使我们有能力定义自己的对象和变量类型. 对象是 ...
随机推荐
- ie6对hover兼容性问题的解决:
ie6对hover兼容性问题的解决: 1,在body里添加以下样式: behavior:url(../scripts/csshover.htc); csshover.htc可直接在网上下载 2,js解 ...
- 结对编程--基于android平台的黄金点游戏(2.0版本)
在昨天上传完博客之后发现一个重大的bug...故在此推出2.0版本. 博文详情见:http://www.cnblogs.com/RayShea/p/5372398.html coding地址:http ...
- 获取贴图及IES文件
最近看了一下以前写的关于收集贴图的函数...又完善了一下,老链接:http://www.cnblogs.com/3dxy/p/3988751.html fn saveusedmaps spath se ...
- Python非阻塞网络通信Howto
在Python中,你使用socket.setblocking(0)使它无阻塞.在C中,它更复杂,(一方面,你需要在BSD风格O_NONBLOCK和几乎不可区分的Posix风味O_NDELAY之间进行选 ...
- JAVA课程体系
文件流 单点登录 maven.maven私服 jenkins 小程序 支付 webservice/webapi redis 工作流 权限:shiro 高并发 springBoot dubbo 消息推送 ...
- CPU利用率异常的分析思路和方法交流探讨
CPU利用率异常的分析思路和方法交流探讨在生产运行当中,经常会遇到CPU利用率异常或者不符合预期的情况,此时,往往暗示着系统性能问题.那么究竟是核心应用的问题?是监控工具的问题?还是系统.硬件.网络层 ...
- 内网透过公网nginx和vpn实现微信接口调试
条件: 1.公网IP开放80/443端口 2.vpn,我熟悉openvpn 3.nginx反向代理 1.在公网服务器上装nginx和vpnserver 2.本地调试电脑装vpnclient,mac o ...
- D3的基本设计思路
学习一项新技术,首先要搞清楚它的基本设计思路,有了这个宏观的技术架构,使用该技术起来,就会得心应手了.否则,就会不知道如何下手,即使看到人家的例子程序,可能也不知其所以然. 下面,就简单的结合自己研究 ...
- 【转】error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
错误信息: /usr/local/memcacheq/bin/memcacheq: error while loading shared libraries: libevent-2.0.so.5: c ...
- [Maven] - Eclipse "maven compiler plugin" 冲突解决
刚安装最新的Maven 3.2.5,在eclipse中使用maven的Run As->Maven Install,总会提示: Failed to execute goal org.apache. ...