资讯专栏INFORMATION COLUMN

使用Object.prototype.toString判断数据类型

wudengzan / 1529人阅读

摘要:例如基本类型数据将返回包装对象复杂类型对象引用类型将直接返回返回当前对象对应的字符串形式。例如使用方法,可以在任意值上调用这个方法帮助我们判断这个值的类型。

工作中使用 typeofinstanceof 操作符往往无法得到数据的准确类型,本文将结合一些知识点,写一个工具方法,来解决这个痛点。
相关知识点:

JavaScript 原生提供Object对象,所有其他对象都继承自Object对象,即那些对象都是Object对象的实例。

Object对象本身是一个构造函数,也可以当作工具方法使用,将任意值转为对象。例如:

    // 基本类型数据将返回包装对象
        var str = "hello world";
        str === Object( str ) // false
        Object( str ) instanceof String  //true
    
        var num = 123 ; 
        num === Object( num ) // false 
        Object(num) instanceof Number // true
    
    //复杂类型(对象、引用类型)将直接返回
        var obj = { name:"mirror" }
        obj === Object( obj )    // true
        
        var arr = [ "a" , "b" , "c" ]
        arr === Object( arr )    // true

Object.prototype.toString()返回当前对象对应的字符串形式。例如:

    var obj = new Object();
    obj.toString()  //  "[object object]"

Object的实例对象可以自定义toString方法,覆盖掉Object.prototype.toString方法。例如:

   var arr = [ "a" , "b" ];
   arr.toString() // "a,b"

使用call方法,可以在任意值上调用这个方法,帮助我们判断这个值的类型。例如:

    Object.prototype.toString.call(2) // "[object Number]"   
    Object.prototype.toString.call("hello world" ) // "[object String]"  
    Object.prototype.toString.call( true ) // "[object Boolean]"  

方法封装
    function type (data){
        if(arguments.length === 0) return new Error("type方法未传参");
        var typeStr = Object.prototype.toString.call(data);
        return typeStr.match(/[object (.*?)]/)[1].toLowerCase();      
    }
    
    type( {} ) //"object"
    type( new Date() ) //"date"
    type( [] ) //"array"

详细讲解请参考阮一峰博客

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107981.html

相关文章

  • 细数判断数据类型的各种方法

    摘要:可用于判断多种数据类型基本数据类型和内置对象,然而对于一些自定义构造函数生成的对象就不能进行判断了。判断是不是所有数据类型中,只有不等于它本身判断数组的方法除了上文提到的三种方法可判断外,还有一个构造函数自带的方法可判断。 数据类型的分类 要想判断数据类型,首先要知道数据类型的分类。数据类型分为基本数据类型和引用数据类型。 基本数据类型 基本数据类型有 五 种,ES6中新加了第 六 种...

    hoohack 评论0 收藏0
  • javascript 数据类型判断 (常见库的数据类型判断源码的分析)

    摘要:对象类型常见的有,,,正则新增自己提供的乐行判断如果不对对象做严格区分使用。的实现使用了原型继承的表示左表达式,表示右表达式,它是用是否等于来判断对象的类型的。常见框架和库的实数据类型判断测试这里将的实现原理抽取出来,用原生实现。 JavaScript一共有六种数据类型,分为原始类型(又名基本类型)和对象类型(又名引用类型) 原始类型有五种,分别为number,string,boole...

    libin19890520 评论0 收藏0
  • JS数据类型& 判断

    摘要:的数据类型,共有六种。通常,数值字符串布尔值这三种类型,合称为原始类型的值,即它们是最基本的数据类型,不能再细分了。运算符返回一个布尔值,表示某个对象是否为指定的构造函数的实例。 以下内容摘自阮一峰-JavaScript-标准参考教程 数据类型 JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbo...

    zhangxiangliang 评论0 收藏0
  • 01.javascript之数据类型

    摘要:新增了第七种类型的值数值字符串布尔值对象数据类型判断有三种方法,可以判断一个值的类型运算符运算符方法运算符运算符可以返回一个值的数据类型。运算符运算符返回一个布尔值,表示对象是否为某个构造函数的实例。 1.数据类型 JavaScript一共有六种数据类型。(ES6新增了第七种Symbol类型的值) 数值(Number) 字符串(String) 布尔值(boolean) undefin...

    Aceyclee 评论0 收藏0
  • 使用toString方法判断对象类型

    摘要:操作符是最常见的类型判断方法,但其有局限性,只能判断基本数据类型,对于数组,日期等对象无法区分,统一显示为。配合,改变方法执行时的所在的环境,可以得到对象的精确类型。 typeof操作符是最常见的类型判断方法,但其有局限性,只能判断基本数据类型,对于数组,日期等对象无法区分,统一显示为object。 typeof []; //object typeof new Date(); //ob...

    xiangzhihong 评论0 收藏0
  • 标准库(一)object对象

    摘要:控制对象状态的方法防止对象扩展。判断一个对象是否被冻结。返回当前对象对应的值。方法的作用是返回一个对象的字符串形式上面代码表示,对于一个对象调用方法,会返回字符串用途通过自定义方法,可以让对象在自动类型转换时,得到想要的字符串形式。 概述Object()Object 构造函数Object 的静态方法「本身的方法Object.keys(),Object.getOwnPropertyNam...

    Muninn 评论0 收藏0

发表评论

0条评论

wudengzan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<