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