怎么实现一个类型判断函数

  1. 判断为空
  2. 判断基础类型
  3. 使用Object.prototype.toString.call(target)来判断引用类型

注意:一定是使用call来调用,否则是判断的Object.prototype的类型此时要先判断是否为基本类型是因为:虽然Object.prototype.toString.call()能判断出某个值是:number/string/boolean,但是其实在包装的时候是把他们先转变成对象然后再判断类型的。但是JS中的包装类型和原始类型还是有区别的,因为对于一个包装类型来说,typeof的值是object

/**
 * 类型判断
 */
function getType(target) {
  //先处理最特殊的Null
  if (target === null) {
    return "null";
  }
  //判断是不是基础类型
  const typeOfT = typeof target;
  if (typeOfT !== "object") {
    return typeOfT;
  }
  //肯定是引用类型了
  const template = {
    "[object Object]": "object",
    "[object Array]": "array",
    // 一些包装类型
    "[object String]": "object - string",
    "[object Number]": "object - number",
    "[object Boolean]": "object - boolean",
  };
  const typeStr = Object.prototype.toString.call(target);
  return template[typeStr];
}

相关推荐

  1. 怎么实现一个类型判断函数

    2024-01-07 21:38:03       55 阅读
  2. KNN算法实例_电影类型判断

    2024-01-07 21:38:03       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-07 21:38:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-07 21:38:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-07 21:38:03       82 阅读
  4. Python语言-面向对象

    2024-01-07 21:38:03       91 阅读

热门阅读

  1. 深入理解Vue3中的watch与watchEffect的使用与区别

    2024-01-07 21:38:03       55 阅读
  2. jax.random.PRNGKey创建伪随机数生成器密钥

    2024-01-07 21:38:03       58 阅读
  3. 【算法题】40. 组合总和 II

    2024-01-07 21:38:03       50 阅读
  4. Spring之事务

    2024-01-07 21:38:03       65 阅读
  5. 【LeetCode-402】移掉K位数字

    2024-01-07 21:38:03       68 阅读
  6. MyBatis中的XML文件中SQL的<=判断符号处理

    2024-01-07 21:38:03       65 阅读
  7. Unity2D学习笔记 | 《勇士传说》教程 | (六)

    2024-01-07 21:38:03       58 阅读
  8. ARM 链接器优化功能介绍

    2024-01-07 21:38:03       59 阅读
  9. 【机器学习前置知识】共轭分布

    2024-01-07 21:38:03       56 阅读