Skip to content
大纲

获取变量的类型

备注

该方法可以判断以下类型的变量

  • 基本类型变量,如 undefinednull、布尔值、数字和字符串,返回对应的类型字符串。
  • 通过 Object.create(null) 创建的原型为 null 的对象,返回 Object
  • 引用类型变量,如对象、数组、函数、正则表达式等,返回对应的类型字符串。
  • 内置对象,如 MathDateError 等,返回对应的类型字符串。
  • 通过构造函数创建的自定义对象,返回对应的类型字符串。
  • Symbol 类型变量,返回 Symbol

TIP

该方法内部使用 Object.prototype.toString() 实现。对象可以通过定义 Symbol.toStringTag 属性来更改 Object.prototype.toString() 的行为,从而导致意想不到的结果。因此请在使用该方法前确认不会受到 Symbol.toStringTag 的影响。

js
const myDate = new Date();
Object.prototype.toString.call(myDate); // [object Date]

myDate[Symbol.toStringTag] = 'myDate';
Object.prototype.toString.call(myDate); // [object myDate]

Date.prototype[Symbol.toStringTag] = 'prototype polluted';
Object.prototype.toString.call(new Date()); // [object prototype polluted]

语法

js
import { getType } from 'warbler-js';
const result = getType(param);

参数

  • param (unknown) : 要获取类型的变量。

返回值

String : 一个用来表示类型的字符串。

源码

js
const getType = (param) => Object.prototype.toString.call(param).split(' ')[1].replace(']', '');

例子

js
import { getType } from 'warbler-js';

let a;
const b = null;
const c = 100;
const d = 'warbler';
const e = true;
const f = Symbol('f');
const reg = /^[a-zA-Z]{5,20}$/;
const foo = () => {};
const arr = [];
const obj = {};
const date = new Date();
const error = new Error();
const args = (function () {
  return arguments;
})();

console.log(getType(a)); //= > Undefined
console.log(getType(b)); //= > Null
console.log(getType(c)); //= > Number
console.log(getType(d)); //= > String
console.log(getType(e)); //= > Boolean
console.log(getType(f)); //= > Symbol
console.log(getType(reg)); //= > RegExp
console.log(getType(foo)); //= > Function
console.log(getType(arr)); //= > Array
console.log(getType(obj)); //= > Object
console.log(getType(date)); //= > Date
console.log(getType(error)); //= > Error
console.log(getType(args)); //= > Arguments

添加版本

1.2.3

Released under the MIT License.