typeof不能够很好的识别参数类型,因此用type封装

本文介绍了一种改进的JavaScript类型检测方法,通过自定义type函数弥补了typeof操作符的不足,能更准确地识别参数类型,包括数组、对象、数字、布尔值和字符串。此外,还探讨了三种区分变量是否为数组或对象的方法:constructor属性、instanceof运算符以及使用Object.prototype.toString.call()方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 typeof不能够很好的识别参数类型,因此用type封装

function type(opts) {
    var template = {
        '[object Object]': 'object',
		'[object Array]': 'array',
		'[object Number]': 'object——number',
		'[object Boolean]': 'object——boolean',
		'[object String]': 'object——string',
	}
	if(opts == null){
		return "null";
	}else if(typeof(opts) == "object"){
		var str = Object.prototype.toString.call(opts);
	    return template[str];
	}else{
		return typeof(opts)
	}
}

区分一个变量是否为数组或者对象三种方法

1、constructor

var arr = {};    // []
console.log(arr.constructor)

 2、instanceof

var arr = {};    // []
console.log(arr instanceof Array)

3、Object.prototype.toString.call()

var arr = {};    // []
console.log(Object.prototype.toString.call(arr))
//数组    "[object Array]"
//对象    "[object Object]"

此为从别处整合而来,出处已忘记。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值