typeofit.js – 获得变量真实的数据类型

使用 JavaScript 中原生的 typeof 方法判断变量数据类型的时候,往往不准确,使用 typeofit.js 就可以获得变量在 JavaScript 中真实的数据类型。typeofit 支持目前所有的 JavaScript 数据类型检测。其实 lodash 中也有类似的方法,不过我这里专门把这些判断方法封装起来也是为了让促学 JavaScript 的朋友更清晰了解如何去判断变量数据类型。

可探测的数据类型

  • ‘array’ – 数组
  • ‘arraybuffer’ – 固定长度的二进制数据缓冲区
  • ‘arguments’ – (函数的)参数对象
  • ‘int8array’ – int8array 数组
  • ‘uint8array’ – uint8array 数组
  • ‘uint8clampedarray’ – uint8clampedarray 数组
  • ‘int16array’ – int16array 数组
  • ‘uint16array’ – uint16array 数组
  • ‘int32array’ – int32array 数组
  • ‘uint32array’ – uint32array 数组
  • ‘float32array’ – float32array 数组
  • ‘float64array’ – float64array 数组
  • ‘boolean’ – 布尔值
  • ‘map’ – Map
  • ‘null’ – 空值
  • ‘undefined’ – 未定义
  • ‘number’ – 数字
  • ‘set’ – Set
  • ‘string’ – 字符串
  • ‘object’ – 对象
  • ‘dataview’ – DataView 视图
  • ‘date’ – 日期
  • ‘error’ – 错误
  • ‘collection’ – HTML NodeList 对象
  • ‘function’ – 函数
  • ‘element’ – HTML 元素节点
  • ‘text’ – HTML 文本节点
  • ‘regexp’ – 正则表达式对象
  • ‘weakmap’ – WeakMap
  • ‘weakset’ – WeakSet
  • ‘whitespace’ – 空字符串

ES6 中新增加的几个强类型的数组(typed array)是为 WebGL 而新近加入的。

CDN 调用 JS 代码

<script type="text/javascript" src="https://unpkg.com/typeofit@1.10.1/typeofit.min.js"></script>

安装

typeofit.js 支持 AMD 和 CMD 规范,可以通过 NPM 或者 BOWER 安装,然后直接引用:

npm 安装

$ npm install typeofit

bower 安装

$ bower install typeofit

调用方法

var typeofit = require('typeofit');
var projects;

// is()
typeofit.is(null); // -> 'null'
typeofit.is(1); // -> 'number'
typeofit.is('robert'); // -> 'string'
typeofit.is(false); // -> 'boolean'
typeofit.is(projects); // -> 'undefined'

// isArray() 
typeofit.isArray([2,3]); // -> true 

// isArrayLike() 
typeofit.isArrayLike(document.getElementsByTagName('div')); // -> true 

// isArguments
function checkArguments(){
    typeofit.isArguments(arguments); // -> true
}
checkArguments();

// isArrayBuffer()
typeofit.isArrayBuffer(new ArrayBuffer(8);); // -> true

/* ===== ES2017 Arrays ===== */
// isInt8Array()
typeofit.isInt8Array( new Int8Array() ); // -> true
// isUint8Array() 
typeofit.isUint8Array( new Uint8Array() ); // -> true
// isUint8ClampedArray() 
typeofit.isUint8ClampedArray( new Uint8ClampedArray() ); // -> true
// isInt16Array() 
typeofit.isInt16Array( new Int16Array() ); // -> true
// isUint16Array() 
typeofit.isUint16Array( new Uint16Array() ); // -> true
// isInt32Array() 
typeofit.isInt32Array( new Int32Array() ); // -> true
// isUint32Array() 
typeofit.isUint32Array( new Uint32Array() ); // -> true
// isFloat32Array() 
typeofit.isFloat32Array( new Float32Array() ); // -> true
// isFloat64Array() 
typeofit.isFloat64Array( new Float64Array() ); // -> true

// isBase64()
typeofit.isBase64('a2V5MT12YWx1ZTEma2V5Mj12YWx1ZTI'); // -> true 

// isBlank()
typeofit.isBlank('  '); // -> true

// isBoolean()
typeofit.isBoolean(false); // -> true 

// isDataView() 
typeofit.isDataView(new DataView(new ArrayBuffer(8))); // -> true 

// isDate() 
typeofit.isDate(new Date()); // -> true 

// isElement() 
typeofit.isElement(document.getElementById('wrap')); // -> true 

// isEmpty() 
typeofit.isEmpty(''); // -> true

// isEmptyObject 
typeofit.isEmptyObject({}); // -> true 

// isError() 
typeofit.isError(new Error('this is an error.')); // -> true 

// isEven() 
typeofit.isEven(2); // -> true

// isFloat() 
typeofit.isFloat(2.4); // -> true

// isFunction() 
typeofit.isFunction(parseInt); // -> true 

// isHex()
typeofit.isHex('#ffffff')); // -> true

// isHTMLCollection()
typeofit.isHTMLCollection(document.getElementsByTagName('div')); // -> true 

// isInfinite()
typeofit.isInfinite(Infinity); // -> true

// isInteger()
typeofit.isInteger(2); // -> true 

// isJSON()
typeofit.isJSON("[\"1\",\"2\",3]"); // -> true

// isMap()
typeofit.is(new Map([
    ['name', 'Robert'],
    ['Gender', 'Male']
])); // -> 'map'

// isNull() 
typeofit.isNull(null); // -> true 

// isNumber() 
typeofit.isNumber(0xffffff); // -> true 

// isNumeric() 
typeofit.isNumeric('0.3'); // -> true 

// isObject() 
typeofit.isObject(Math); // -> true 

// isOdd()
typeofit.isOdd(3); // -> true

// isPlainObject() 
typeofit.isPlainObject({name:'Robert'}); // -> true 

// isHash() 
typeofit.isHash({name:'Robert'}); // -> true 

// isRegExp() 
typeofit.isRegExp(/^\s+$/ig); // -> true 

// isSet() 
typeofit.isSet(new Set([1,2,3,4])); // -> true

// isString() 
typeofit.isString('string'); // -> true 

// isSymbol() 
typeofit.isSymbol(Symbol('string')); // -> true 

// isTextNode() 
typeofit.isTextNode(document.createTextNode('a text node')); // -> true 
 
// isUndefined()
typeofit.isUndefined(projects); // -> true 

// isValue()
typeofit.isValue([2,34]); // -> true 

// isWeakMap()
typeofit.isWeakMap(new WeakMap({},'Robert')); // -> true

// isWeakSet()
typeofit.isWeakSet(new WeakSet([
    {'name': 'Robert'},
    window
])); // -> true

// isXML()
typeofit.isXML( new require('xmldom').DOMParser.parseFromString(
    '<xml xmlns="a" xmlns:c="./lite">\n'+
    '\t<child>test</child>\n'+
    '\t<child></child>\n'+
    '\t<child/>\n'+
    '</xml>','text/xml')); // -> true

Methods

Core

Primitive

Array && Array Like

ArrayBuffer

HTML Element

Function

Map

Number

Object

Set

String

Typed Array

Others

Fork on Github

项目地址:http://yaohaixiao.github.io/typeofit

Download

下载地址:master.zip

SHARE THIS PAGE

免责声明:本站文章中的观点都是作者个人观点,并没有以任何方式反映他所属机构的意见。

发表评论