使用Object.prototype.toString判断数据类型
工作中使用
typeof
、instanceof
操作符往往无法得到数据的准确类型,本文将结合一些知识点,写一个工具方法,来解决这个痛点。
相关知识点:
- 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判断数据类型相关推荐
- JavaScript:Object.prototype.toString进行数据类型判定
在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Obje ...
- 数据类型的判断 --Object.prototype.toString.call(obj)精准检测对象类型
数据类型的判断 typeof typeof返回一个表示数据类型的字符串,返回结果包括:number.boolean.string.symbol.object.undefined.function等7种 ...
- 通过 Object.prototype.toString.call() 进行类型判断
为什么80%的码农都做不了架构师?>>> 首先看一段ECMA中对Object.prototype.toString的解释: Object.prototype.toString( ...
- 由Object.prototype.toString.call( )引发关于toString( )方法的思考
引言 前端面试中有这么一道经典的问题,如何判断一个对象是否为数组? ES5提供了一个确定对象是否为数组的函数 Array.isArray(object); 复制代码 其中,object是必须的,表示要 ...
- JS中的toString、Object.toString、Object.prototype.toString
不同类型值的toString方法: //Number const num = 123; num.toString(); // '123' (123).toString(); // '123' 整数必须 ...
- 【javaScript】Object.prototype.toString.call() 、 instanceof 以及 Array.isArray() 区别与优化层面的比较
1. Object.prototype.toString.call() 每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [Object ...
- JavaScript中Object.prototype.toString方法的原理
在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. <一>, ECMAScript 3 1. 在E ...
- Object.prototype.toString.call()检测
在日常开发中,我们经常需要判断某个对象是否是数组类型的,在js中检测对象类型的常见的方法有几种: 1.typeof操作符.对于Function.String.Number.Undefined这几种类型 ...
- JavaScript:Object.prototype.toString方法的原理
在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Obje ...
- 为什么用Object.prototype.toString.call(obj)检测对象类型?
37 Essential JavaScript Interview Questions*,中有一道javascript题: 使用 typeof bar === "object" 检 ...
最新文章
- java 区块链使用_使用Java创建第一个区块链
- javascript(arguments)
- Dockerfile项目环境介绍
- TypeError: 'builtin_function_or_method' object has no attribute '__getitem__'的解决方法等
- java中一个线程最小优先数_Java线程的优先级
- 【备忘】Python编程实践视频教程+教材 27集 下载
- QT 6.3和Visual Studio 2022详细安装及配置教程
- 【Python】网络爬虫
- 怎么批量修改图片尺寸大小?
- word一打字就有下划线_word打字自带下划线 为什么WORD打字时总带有下划线,如何解决?...
- 知云文献翻译打不开_【小虎聊干货】八大翻译软件大揭秘,告诉你科研翻译的正确打开方式...
- JAVA中各种单位之间的转换
- 在中国如何使用chatGPT
- Batch Normalization介绍
- 魔方三阶玩法[图解]
- 也谈地方门户网站运营
- VSCode代码格式化快捷键及保存时自动格式化
- SpringCloud Gateway 构建全局缓存 Request 解决 body 不可重复读问题
- 【无标题】翻译数字孪生经典文章Shaping the digital twin for design and production engineering
- 递归求解“小和“、普通方式求解“小和“
热门文章
- eclipse下androidannotations开发环境搭建
- 详解如何实现斗鱼、B站等全局悬浮窗直播小窗口
- 视频画面帧的展示控件SurfaceView及TextureView对比
- java单线程任务调度_一文详解Spring任务执行和调度(小结)
- iqc工作职责和工作内容_新媒体实习生是做什么的?新媒体实习生岗位职责工作内容...
- pg日期转周_postgres日期格式转换
- linux安装 web2py,TurnkeyLinux上用于Web2Py到MySQL的DAL连接字符串
- react前端封装接口弹出错误_react+ts打包发布后报Minified React error ..这种错误
- assets删除文件_Windows10下node_modules复制和删除的各种方式的测试
- “死”法不重样,一根数据线如何从“机器伴侣”变身电脑杀手?...