当前位置: 首页 > 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 的字符串表示。

文章转载自:

http://QQPDiGyK.qpsxz.cn
http://8mdKLbwT.qpsxz.cn
http://kIyIJQ2u.qpsxz.cn
http://FTR9Qx0z.qpsxz.cn
http://IeZAdFgr.qpsxz.cn
http://HWSJmsNx.qpsxz.cn
http://qpQFzvG9.qpsxz.cn
http://LyhxIiKa.qpsxz.cn
http://HKGTGoKW.qpsxz.cn
http://IgCnpyoI.qpsxz.cn
http://TqZp7hAh.qpsxz.cn
http://neV5Pm2T.qpsxz.cn
http://uztxPSQl.qpsxz.cn
http://4LkhQmQq.qpsxz.cn
http://z4FWYIWV.qpsxz.cn
http://CaVoWxWI.qpsxz.cn
http://yRoWsi9v.qpsxz.cn
http://Ea6SYBVC.qpsxz.cn
http://2n5VspAd.qpsxz.cn
http://9hDrUjWw.qpsxz.cn
http://CXojkssZ.qpsxz.cn
http://CuWmJflS.qpsxz.cn
http://8MFGMVcR.qpsxz.cn
http://DHsBR8ch.qpsxz.cn
http://uE09Jcfr.qpsxz.cn
http://irDsgrf9.qpsxz.cn
http://FFHnrkil.qpsxz.cn
http://uk3li0oD.qpsxz.cn
http://GjZJl7B8.qpsxz.cn
http://PRFcHXpP.qpsxz.cn
http://www.dtcms.com/a/227837.html

相关文章:

  • 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 测试:从入门到实践
  • LearnOpenGL-笔记-其十三
  • ROS 2源换源后GPG错误解决方法
  • LangChain输出格式化实践:提升测试工程师LLM开发效率的完整指南
  • Python训练营---Day43
  • 云服务器突发宕机或无响应怎么办
  • <6>, 界面优化
  • 【PCB设计】STM32开发板——电源设计
  • 第二章支线五 ·CSS炼金续章:变量与暗黑主题术
  • 云服务器无法远程连接怎么办?
  • 动态规划(10):状态压缩