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:小结

代码中需要注意的地方已在注释中标明,代码整体上也非常简单就简简单单三句话,不过这个方法还是比较有用的,我相信在今后的项目中也会使用的到的。根据我以往的经验,判断一个对象或者变量“非空与否”,“定义未定义与否”是最为常见,此方法具有一定的通用性的,也可以根据自己的需要进行再扩展。

另外,昨天我突然间发现自己的博文,被有些网站私自的转载并且没有注明文章来自博客园,将作者的信息也全部的抹去了,这样我觉得不太好,虽然,我写博客的目的是为了记录自己的技术积累和感想,主要以备自己将来的使用,也非常乐意让其他需要者参看或转载,不过请尊重他人的劳动付出,至少标明一下文章的出处!

时间: 2024-08-06 03:21:43

JS-安全检测JavaScript基本数据类型和内置对象的方法的相关文章

javascript中的arguments内置对象

什么是arguments arguments 是是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的.所有主要的js函数库都利用了arguments对象.所以agruments对象对于javascript程序员来说是必需熟悉的. 所有的函数都有属于自己的一个arguments对象,它包括了函所要调用的参数.他不是一个数组,如果用typeof arguments,返回的是'object'.虽然我们可以用调用数据的方法来调用arguments.比如length,还有

javascript的优缺点和内置对象

1)优点:简单易用,与Java有类似的语法,可以使用任何文本编辑工具编写,只需要浏览器就可执行程序,并且事先不用编译,逐行执行,无需进行严格的变量声明,而且内置大量现成对象,编写少量程序可以完成目标: 2)缺点:不适合开发大型应用程序: 3)Javascript有11种内置对象: Array.String.Date.Math.Boolean.Number.Function.Global.Error.RegExp.Object. 原文地址:https://www.cnblogs.com/yuyu6

JSP 的内置对象及方法,动作和作用,常用指令

JSP 的内置对象及方法:JSP 共有以下9 种基本内置组件:request:用户端请求,此请求会包含来自GET/POST 请求的参数:response:网页传回用户端的回应:pageContext:网页的属性是在这里管理:session:与请求有关的会话期,可以存贮用户的状态信息:application:servlet 正在执行的内容:out:用来传送回应的输出:config:servlet 的构架部件,用于存取servlet 实例的初始化参数:page:JSP 网页本身:exception:

python 之 前端开发( JavaScript变量、数据类型、内置对象、运算符、流程控制、函数)

11.4 JavaScript 11.41 变量 1.声明变量的语法 // 1. 先声明后定义 var name; // 声明变量时无需指定类型,变量name可以接受任意类型 name= "egon"; ? // 2. 声明立刻定义 var age = 18; 2.变量名命名规范 1.由字母.数字.下划线.$ 组成,但是不能数字开头,也不能纯数字2.严格区分大小写3.不能包含关键字和保留字(以后升级版本要用的关键字).如: abstract.boolean.byte.char.clas

js常用内置对象及方法

在js中万物皆对象:字符串,数组,数值,函数...... 内置对象都有自己的属性和方法,访问方法如下: 对象名.属性名称: 对象名.方法名称 1.Array数组对象 unshift( )    数组开头增加 功能:给数组开头增加一个或多个 参数:一个或多个 返回值:数组的长度 原数组发生改变 shift( )        数组开头删除一项 功能:给数组开头删除一个 参数:无 返回值:被删除的内容 原数组发生改变 push( )       数组末尾增加 功能:给数组末尾增加一项或多项 参数:一

JS的常用内置对象及方法

大家好,我是逆战班的一名学员,今天我给大家介绍一下关于JS常用内置对象及其使用方法的相关知识. 对于JS的内置对象,我所了解的有Array对象.Math对象.Date对象 一.Array对象 1.concat() 例:var arr1=arr. concat (1,2,3) var arr1=arr. concat (arr) 表示把几个数组或元素合并成一个数组 2.join() 例:var str= arr. join( ) 设置分隔符连接数组元素为一个字符串 3.pop() 例:arr. p

JavaScript-常用内置对象及方法

在JS中万物皆对象,字符串,数组,数值,函数,日期...... 内置对象都有它们自己的属性和方法: 对象名.属性名称; 对象名.方法名称 一.Array数组对象 1)shift 格式:数组.shift() 功能:移除数组开头第一项 参数:无 返回值:移除的内容 原数组发生改变 2)unshift 格式:数组.unshift(参数...) 功能:在数组开头添加一个或多个 参数:一个或多个 返回值:数组的长度 原数组发生改变 3)push 格式:数组.push(元素...) 功能:给数组末尾添加一个

javascript 内置对象和方法

一.自定义对象 方法1 /* 自定义对象 */ var sex= "gender" var person={"name": "tom", "age": 19, "gender": "男"} console.log(person.name) console.log(person.age) console.log(person[sex]) /* 注意:"name"作为属性

jsp内置对象及其方法

JSP中一共预先定义了9个这样的对象,分别为:   request.   response.   session.   application.   out.   pagecontext.   config.   page.   exception 1.request 对应的类:javax.servlet.http.HttpServletRequest   说明:客户端的请求信息被封装在request对象中,包括头信息.浏览器信息.客户端ip.服务器端ip.请求方式以及请求参数等   常用方法: