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]"
此为从别处整合而来,出处已忘记。。。