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

  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];
}

你可能感兴趣的:(javascript,前端,开发语言)