js通过Object.prototype.toString.call()精确判断数据类型后并复制数据

1.JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object” 五种。
对于数组、函数、对象来说,其关系复杂,若使用 typeof 都会统一返回 为object,这样为后续处理带来不便。
2.关键函数方法
       js原生方法Object.prototype.toString.call();它可以给出数据的确切类型,相比typeof要精确。

3.代码如下:

	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);}));
4.运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值