当前位置: 首页 > 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://www.lqws.cn/news/70615.html

相关文章:

  • 鸿蒙进阶——Mindspore Lite AI框架源码解读之模型加载详解(一)
  • 【Part 3 Unity VR眼镜端播放器开发与优化】第二节|VR眼镜端的开发适配与交互设计
  • 【数据库】关系数据库标准语言-SQL(金仓)下
  • Oracle expdp过滤部分表数据
  • Unity中应对高速运动的物体,碰撞组件失效的问题?
  • 如何在 Windows 11 24H2 的任务栏时钟中显示秒数
  • 【03】完整开发腾讯云播放器SDK的UniApp官方UTS插件——优雅草上架插件市场-卓伊凡
  • DDR5舍入定义和算法Rounding Definitions and Algorithms详细讲解
  • 设备驱动与文件系统:03 生磁盘的使用
  • React 18 生命周期详解与并发模式下的变化
  • SQL快速入门【转自牛客网】
  • 数智管理学(十六)
  • azure devops 系列 - 常用的task
  • BUUCTF[极客大挑战 2019]Secret File 1题解
  • 动态规划(10):状态压缩
  • 【AUTOSAR SystemServices】深入解析StbM模块:功能定义、工作原理与代码实现
  • Modern C++(二)预处理器及表达式
  • 概率统计:AI大模型的数学支柱
  • imgsz参数设置
  • 数据结构与算法:图论——拓扑排序
  • [RoarCTF 2019]Easy Calc
  • 常见ADB指令
  • 数据库系统概论(十六)数据库安全性(安全标准,控制,视图机制,审计与数据加密)
  • JavaScript性能优化
  • [android]MT6835 Android 指令启动MT6631 wifi操作说明
  • 【大模型学习】项目练习:视频文本生成器
  • 【C盘瘦身】给DevEco Studio中HarmonyOSEmulator(鸿蒙模拟器)换个地方,一键移动给C盘瘦身
  • Python发送天气预报到企业微信解决方案
  • 计算机视觉---YOLOv6
  • 函数组件和类组件