当前位置: 首页 > news >正文

JS手写代码篇---手写类型判断函数

9、手写类型判断函数

手写完成这个函数:输入一个对象(value),返回它的类型

js中的数据类型:

  • 值类型:String、Number、Boolean、Null、Undefied、Symbol
  • 引用类型:Object、Array、Function、RegExp、Date

使用typeOf判断类型,但是null返回的是object, 只能判断值类型,其他返回的是object,Object.prototype.toString.call():判断数据类型

大概思路:

先使用typeof判断输入对象的类型,如果是值类型就直接返回typeof识别到的类型,如果不是就要使用Object.prototype.toString.call()返回表示对象类型的字符串。

代码:

    function getType(value){// 对于null要添加一个特殊的检查if(value === null){return value + "";}// 分两个方面:直接使用typeof和使用Object.prototype.toString.call// 如果是值类型:、if(typeof value !== 'object'){//小写return typeof value;}else {// 如果是对象,就要使用Object.prototype.toString.callconst valueContext = Object.prototype.toString.call(value).slice(8 , -1).toLowerCase();return valueContext;}}

为什么要使用call???

  • Object.prototype.toString 直接调用时,this 默认指向 Object.prototype,因此返回 "[object Object]"
  • Object.prototype.toString.call(value) 使用 call 方法调用时,可以显式地指定 this 的值为 value,因此返回 value 的字符串表示。
    function getType(value){// 对于null要添加一个特殊的检查if(value === null){return value + "";}// 分两个方面:直接使用typeof和使用Object.prototype.toString.call// 如果是值类型:、if(typeof value !== 'object'){//小写return typeof value;}else {// 如果是对象,就要使用Object.prototype.toString.callconst valueContext = Object.prototype.toString.call(value).slice(8 , -1).toLowerCase();return valueContext;}}

为什么要使用call???

  • Object.prototype.toString 直接调用时,this 默认指向 Object.prototype,因此返回 "[object Object]"
  • Object.prototype.toString.call(value) 使用 call 方法调用时,可以显式地指定 this 的值为 value,因此返回 value 的字符串表示。

相关文章:

  • Python中三种不同包读取csv文件数据的方式:numpy、pandas、csv
  • Shell
  • android binder(三)binder.c函数分析
  • hadoop伪分布式配置(单机)
  • Unity中的MonoSingleton<T>与Singleton<T>
  • 回测效率提升500%!khQuant打板策略回测性能深度剖析——基于miniQMT的回测系统深度优化【AI量化第29篇】
  • AI矢量软件|Illustrator 2025网盘下载与安装教程指南
  • PAT-甲级JAVA题解(更新中...)
  • 浅写弱口令与命令爆破
  • 中科院报道铁电液晶:从实验室突破到多场景应用展望
  • 动中通天线跟踪性能指标的测试
  • windows11安装scoop 20250602
  • RAG入门 - Retriever(1)
  • 每天总结一个html标签——a标签
  • 第一章:计算机系统概论
  • AI智能体|扣子(Coze)搭建【合同/文档审查】工作流
  • Modern C++(二)预处理器及表达式
  • 嵌入式开发之STM32学习笔记day16
  • 安装DockerDocker-Compose
  • Playwright Python API 测试:从入门到实践
  • 温州专业网站建设公司/软文推广文案
  • python 自己做网站/win10优化大师好用吗
  • 小型服务器做网站/谷歌浏览器安卓版
  • 网上宿迁官方网站/百度客服人工服务电话
  • wordpress 网站 图标/我赢网seo优化网站
  • 网络维护实践报告3000/seo快速提升排名