Skip to content
大纲

判断变量的类型

备注

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

  • 基本类型变量,如 undefinednull、布尔值、数字和字符串。
  • 通过 Object.create(null) 创建的原型为 null 的对象。
  • 引用类型变量,如对象、数组、函数、正则表达式等。
  • 内置对象,如 MathDateError 等。
  • 通过构造函数创建的自定义对象。
  • 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 { isType } from 'warbler-js';
const result = isType(param, type);

参数

  • param (unknown) : 要获取类型的变量。
  • type (String) : 要判断的类型。

返回值

Boolean : 变量是否为指定的类型。

源码

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

例子

js
import { isType } 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(isType(a, 'Undefined')); //=> true
console.log(isType(b, 'Null')); //=> true
console.log(isType(c, 'Number')); //=> true
console.log(isType(d, 'String')); //=> true
console.log(isType(e, 'Boolean')); //=> true
console.log(isType(f, 'Symbol')); //=> true
console.log(isType(reg, 'RegExp')); //=> true
console.log(isType(foo, 'Function')); //=> true
console.log(isType(arr, 'Array')); //=> true
console.log(isType(obj, 'Object')); //=> true
console.log(isType(date, 'Date')); //=> true
console.log(isType(error, 'Error')); //=> true
console.log(isType(args, 'Arguments')); //=> true

添加版本

1.2.3

Released under the MIT License.