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

相关文章:

  • Linux 基础指令入门指南:解锁命令行的实用密码
  • 无他相机:专业摄影,触手可及
  • 【C++高级主题】转换与多个基类
  • 电力系统时间同步系统
  • 玩客云 OEC/OECT 笔记(2) 运行RKNN程序
  • 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录——4. 配置服务器终端环境 zsh , oh my zsh, vim
  • 数智管理学(十六)
  • 需求调研文档——日志文件error监控报警脚本
  • CSS强制div单行显示不换行
  • Qt/C++编写GB28181服务端工具/绿色版开箱即用/对标wvp-gb28181/实时画面预览/录像回放下载
  • 百度golang研发一面面经
  • github 提交失败,连接不上
  • 19-剑侠情缘2-2021端魔改版+虚拟单机搭建+高清大屏+视频教程
  • 高效使用Map的“新”方法
  • 用Python开启游戏开发之旅
  • 修改vscode切换上一个/下一个标签页快捷键
  • SpringBoot高校宿舍信息管理系统小程序
  • Java转义字符
  • PDF 转 HTML5 —— HTML5 填充图形不支持 Even-Odd 奇偶规则?(第一部分)
  • 自主设计一个DDS信号发生器
  • [ Qt ] | 与系统相关的操作(一):鼠标相关事件
  • Go整合Redis2.0发布订阅
  • 通过《哪吒》看人生百态
  • 数据结构与算法:图论——拓扑排序
  • GMDCMonitor企业版功能分享0602
  • Qt OpenGL 实现交互功能(如鼠标、键盘操作)
  • leetcode90.子集II:排序与同层去重的回溯优化策略
  • 【leetcode】459.重复的子字符串
  • MyBatis源码解析:从 Mapper 接口到 SQL 执行的完整链路
  • 正则表达式在Java中的应用(补充)