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

相关知识点:

  • JavaScript 原生提供Object对象,所有其他对象都继承自Object对象,即那些对象都是Object对象的实例。
  • Object对象本身是一个构造函数,也可以当作工具方法使用,将任意值转为对象。例如:

        // 基本类型数据将返回包装对象var str = 'hello world';str === Object( str ) // falseObject( str ) instanceof String  //truevar num = 123 ; num === Object( num ) // false Object(num) instanceof Number // true//复杂类型(对象、引用类型)将直接返回var obj = { name:"mirror" }obj === Object( obj )    // truevar 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"

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

使用Object.prototype.toString判断数据类型相关推荐

  1. JavaScript:Object.prototype.toString进行数据类型判定

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Obje ...

  2. 数据类型的判断 --Object.prototype.toString.call(obj)精准检测对象类型

    数据类型的判断 typeof typeof返回一个表示数据类型的字符串,返回结果包括:number.boolean.string.symbol.object.undefined.function等7种 ...

  3. 通过 Object.prototype.toString.call() 进行类型判断

    为什么80%的码农都做不了架构师?>>>    首先看一段ECMA中对Object.prototype.toString的解释: Object.prototype.toString( ...

  4. 由Object.prototype.toString.call( )引发关于toString( )方法的思考

    引言 前端面试中有这么一道经典的问题,如何判断一个对象是否为数组? ES5提供了一个确定对象是否为数组的函数 Array.isArray(object); 复制代码 其中,object是必须的,表示要 ...

  5. JS中的toString、Object.toString、Object.prototype.toString

    不同类型值的toString方法: //Number const num = 123; num.toString(); // '123' (123).toString(); // '123' 整数必须 ...

  6. 【javaScript】Object.prototype.toString.call() 、 instanceof 以及 Array.isArray() 区别与优化层面的比较

    1. Object.prototype.toString.call() 每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [Object ...

  7. JavaScript中Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. <一>, ECMAScript 3  1. 在E ...

  8. Object.prototype.toString.call()检测

    在日常开发中,我们经常需要判断某个对象是否是数组类型的,在js中检测对象类型的常见的方法有几种: 1.typeof操作符.对于Function.String.Number.Undefined这几种类型 ...

  9. JavaScript:Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Obje ...

  10. 为什么用Object.prototype.toString.call(obj)检测对象类型?

    37 Essential JavaScript Interview Questions*,中有一道javascript题: 使用 typeof bar === "object" 检 ...

最新文章

  1. java 区块链使用_使用Java创建第一个区块链
  2. javascript(arguments)
  3. Dockerfile项目环境介绍
  4. TypeError: 'builtin_function_or_method' object has no attribute '__getitem__'的解决方法等
  5. java中一个线程最小优先数_Java线程的优先级
  6. 【备忘】Python编程实践视频教程+教材 27集 下载
  7. QT 6.3和Visual Studio 2022详细安装及配置教程
  8. 【Python】网络爬虫
  9. 怎么批量修改图片尺寸大小?
  10. word一打字就有下划线_word打字自带下划线 为什么WORD打字时总带有下划线,如何解决?...
  11. 知云文献翻译打不开_【小虎聊干货】八大翻译软件大揭秘,告诉你科研翻译的正确打开方式...
  12. JAVA中各种单位之间的转换
  13. 在中国如何使用chatGPT
  14. Batch Normalization介绍
  15. 魔方三阶玩法[图解]
  16. 也谈地方门户网站运营
  17. VSCode代码格式化快捷键及保存时自动格式化
  18. SpringCloud Gateway 构建全局缓存 Request 解决 body 不可重复读问题
  19. 【无标题】翻译数字孪生经典文章Shaping the digital twin for design and production engineering
  20. 递归求解“小和“、普通方式求解“小和“

热门文章

  1. eclipse下androidannotations开发环境搭建
  2. 详解如何实现斗鱼、B站等全局悬浮窗直播小窗口
  3. 视频画面帧的展示控件SurfaceView及TextureView对比
  4. java单线程任务调度_一文详解Spring任务执行和调度(小结)
  5. iqc工作职责和工作内容_新媒体实习生是做什么的?新媒体实习生岗位职责工作内容...
  6. pg日期转周_postgres日期格式转换
  7. linux安装 web2py,TurnkeyLinux上用于Web2Py到MySQL的DAL连接字符串
  8. react前端封装接口弹出错误_react+ts打包发布后报Minified React error ..这种错误
  9. assets删除文件_Windows10下node_modules复制和删除的各种方式的测试
  10. “死”法不重样,一根数据线如何从“机器伴侣”变身电脑杀手?...