js数据类型的判断——案例6精致而优雅的判断数据类型

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js数据类型的判断——案例6精致而优雅的判断数据类型相关的知识,希望对你有一定的参考价值。

1.typeof 操作符只能判断简单的数据类型,对应复杂的数据类型它就无能为力,如下面判断的数组和对象返回的都是object

console.log(typeof undefined,typeof 1,typeof '1',typeof true,typeof function(), typeof Symbol());
//undefined number string boolean function symbol 
console.log(typeof null,typeof [],typeof ,typeof new Date());
//object object object object

2.instanceof操作符判断复杂的数据类型

console.log([].constructor == Array); //true
console.log(function().constructor == Function); //true
console.log(new Date().constructor == Date); //true
console.log(div instanceof htmlElement);//true

3.constructor属性判断复杂的数据类型

console.log([] instanceof Array);//true
console.log(function() instanceof Function); //true
console.log(new Date() instanceof Date); //true

4.toString判断复杂的数据类型

var arr = [];var arr2 = ;var arr3 = new Date();var arr4 = new RegExp();var arr5 = null;
console.log( Object.prototype.toString.call(arr) == '[object Array]' ); //true
console.log( Object.prototype.toString.call(arr2) == '[object Object]' ); //true
console.log( Object.prototype.toString.call(arr3) == '[object Date]' ); //true
console.log( Object.prototype.toString.call(arr4) == '[object RegExp]' ); //true
console.log( Object.prototype.toString.call(arr5) == '[object Null]' ); //true

注:instanceof和constructor在iFrame中穿插使用的时候会出错,toString不会,最好的方法是用toString来判断,如果不在iFrame使用是可以用的。

这种情况下使用会报错

var oF = document.createElement('iframe');
document.body.appendChild( oF );
var ifArray = window.frames[0].Array;//这个Array是iframe下面的
var arr = new ifArray();
console.log( arr.constructor == Array );  //false
console.log( arr instanceof Array );  //false
console.log( Object.prototype.toString.call(arr) == '[object Array]' );  //true

5.数组的方法----Array.isArray(变量)

console.log(Array.isArray(arr))//true;

6.精致而优雅的判断数据类型

function viewType(param) 
	var string = Object.prototype.toString.call(param);
	//js里的substr()方法是用来截取字符串的
	//参数一: 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
   //参二:要截取的字符串的长度
	return string.substr(8, string.length-9)

console.log(viewType([1,2]));//Array

以上是关于js数据类型的判断——案例6精致而优雅的判断数据类型的主要内容,如果未能解决你的问题,请参考以下文章

js类型判断

js获取或判断任意数据类类型的通用方法(getDataType)和将NodeList转为数组(NodeListToArray)

JS 如何判断精确的判断数据类(数组对象)

js类型判断

js 中关于数据类型的判断

判断JS数据类型的几种方法