Appearance
判断变量的类型
备注
该方法可以判断以下类型的变量
- 基本类型变量,如
undefined
、null
、布尔值、数字和字符串。 - 通过
Object.create(null)
创建的原型为null
的对象。 - 引用类型变量,如对象、数组、函数、正则表达式等。
- 内置对象,如
Math
、Date
、Error
等。 - 通过构造函数创建的自定义对象。
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