关于数据类型的判断不使用typeof的精确定位
2017-08-07 14:27
441 查看
1.JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object” 五种。
对于数组、函数、对象来说,其关系复杂,若使用 typeof 都会统一返回 为object,这样为后续处理带来不便。
2.关键函数方法
js原生方法Object.prototype.toString.call();它可以给出数据的确切类型,相比typeof要精确。
代码如下:
运行结果
123
‘123’
null
Undefined
false
[1,2,4]
Object{name: ‘wc’}
function(){alert(23)}
对于数组、函数、对象来说,其关系复杂,若使用 typeof 都会统一返回 为object,这样为后续处理带来不便。
2.关键函数方法
js原生方法Object.prototype.toString.call();它可以给出数据的确切类型,相比typeof要精确。
代码如下:
function getDataType(data){ var getType=Object.prototype.toString; var myType=getType.call(data);//调用call方法判断类型,结果返回形如[object Function] var typeName=myType.slice(8,-1);//[object Function],即取除了“[object ”的字符串。 var copyData='';//复制后的数据 //console.log(data+" is "+myType); switch(typeName){ case 'Number': copyData=data-0; break; case 'String': copyData="'"+data+"'"; break; case 'Function': copyData=data; break; case 'Null': copyData=null; break; case 'Undefined': copyData="Undefined"; break; case 'Array': copyData=[];//先将copyData变为空数组 for(var i=0;i<data.length;i++){ copyData[i]=data[i];//将data数组数据逐个写入copyData } break; case 'Object': copyData={};//先将copyData变为空对象 for(var x in data){ copyData[x]=data[x]; } break; case 'Boolean': copyData=data; break; default : copyData=data; break; } return copyData; } console.log(getDataType(123)); console.log(getDataType("123")); console.log(getDataType(null)); console.log(getDataType(undefined)); console.log(getDataType(false)); console.log(getDataType([1,2,4])); console.log(getDataType({"name":"wc"})); console.log(getDataType(function(){alert(23);}));
运行结果
123
‘123’
null
Undefined
false
[1,2,4]
Object{name: ‘wc’}
function(){alert(23)}
相关文章推荐
- 如何判断js中的数据类型:typeof、instanceof、 constructor、 prototype方法比较
- 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
- 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
- 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
- 第三节:原生数据类型使用陷阱 Pitfall of Primitive Data Type
- boost在自己主动确定数据类型(BOOST_TYPEOF和BOOST_AUTO)使用
- javaScript判断数据类型以及typeof和intanceof的差别
- js 判断各种数据类型 了解js的都知道, 有个typeof 用来判断各种数据类型,有两种写法:typeof xxx ,typeof(xxx) 如下实例:
- JavaSE第三讲:原生数据类型使用陷阱 Ptifall of Primitive Data Type
- js判断undefined变量类型使用typeof
- 【北京圣思园学习笔记】第03讲:原生数据类型使用陷阱(Pitfall of Primitive Data Type)
- 大三学长带我学习JAVA.作业2. 第二讲(原生数据类型 Primitive Data Type)。第三讲(原生数据类型使用陷阱 Pitfall of Primitive Data Type)。大三学长带我学习JAVA.作业2.
- asp.net 中使用TypeOf进行类型判断
- Flex进行数据类型判断:is typeof ObjectUtil.getClassInfo
- typeof + instanceof+toString+constructor是如何判断javascript数据类型的
- 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
- 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
- 判断数据类型:typeof和instanceof
- 圣思园张龙-Java SE 第三讲(原生数据类型使用陷阱 Pitfall of Primitive Data Type)
- Java SE 第三讲(原生数据类型使用陷阱 Pitfall of Primitive Data Type)