JavaScript之数据类型检测toStringcallsplitslicetoLowerCase
Posted web半晨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript之数据类型检测toStringcallsplitslicetoLowerCase相关的知识,希望对你有一定的参考价值。
文章目录
1、怪怪的方案-不推荐
function detectionType(type)
// 获取数据类型
type = Object.prototype.toString.call(type);
// 按空格切割字符串,并转成数组
type = type.split(' ')[1];
// 截取类型
type = type.slice(0, type.length - 1);
// 转为小写
type = type.toLowerCase();
// 返回
return type;
console.log(detectionType('mj'));
// string
console.log(detectionType(''));
// string
console.log(detectionType(' '));
// string
console.log(detectionType(1));
// number
console.log(detectionType( id: 1 ));
// object
console.log(detectionType( id: 2, list: [7] ));
// object
console.log(detectionType([7]));
// array
console.log(detectionType([ id: 1, list: [7] ]));
// array
console.log(detectionType(new Date()));
// date
console.log(detectionType(null));
// null
console.log(detectionType());
// undefined
console.log(detectionType(undefined));
// undefined
console.log(detectionType(function () ));
// function
console.log(detectionType(new RegExp()));
// regexp
console.log(detectionType(/runoob/i));
// regexp
2、构造函数方案-推荐
function IsType(type)
this.type = type.toLowerCase();
this.checkType = function checkType(value)
value = Object.prototype.toString.call(value);
value = value.slice(1, value.length - 1);
value = value.split(' ')[1];
value = value.toLowerCase();
return value === this.type;
3、class方案-存在兼容问题-慎用
class IsType
constructor(type)
this.type = type.toLowerCase();
checkType(value)
value = Object.prototype.toString.call(value);
value = value.slice(1, value.length - 1);
value = value.split(' ')[1];
value = value.toLowerCase();
return value === this.type;
4、方案2和方案3的调用方式
let s = new IsType('string'),
num = new IsType('number'),
o = new IsType('object'),
a = new IsType('array'),
d = new IsType('date'),
nul = new IsType('null'),
u = new IsType('undefined'),
f = new IsType('function'),
r = new IsType('regexp');
console.log(s.checkType('mj'));
// true
console.log(s.checkType(''));
// true
console.log(s.checkType(' '));
// true
console.log(num.checkType(1));
// true
console.log(o.checkType( id: 1 ));
// true
console.log(o.checkType( id: 2, list: [7] ));
// true
console.log(a.checkType([7]));
// true
console.log(a.checkType([ id: 1, list: [7] ]));
// true
console.log(d.checkType(new Date()));
// true
console.log(nul.checkType(null));
// true
console.log(u.checkType());
// true
console.log(u.checkType(undefined));
// true
console.log(f.checkType(function () ));
// true
console.log(r.checkType(new RegExp()));
// true
console.log(r.checkType(/runoob/i));
// true
以上是关于JavaScript之数据类型检测toStringcallsplitslicetoLowerCase的主要内容,如果未能解决你的问题,请参考以下文章
检测变量类型之typeof,instanceof,Object.prototype.toString
js万能类型检测Object.prototype.toString.call——定制Object.prototype.toString.call的检测结果