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的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript检测数据类型

检测变量类型之typeof,instanceof,Object.prototype.toString

js万能类型检测Object.prototype.toString.call——定制Object.prototype.toString.call的检测结果

JavaScript——杂项

JavaScript封装检测数据类型功能ObjectprototypetoStringcall

捋一捋Javascript数据类型转换规则