var und=undefined;
var nul=null;
var boo=true;
var num=1;
var str='xys'
var obj=new Object();
var arr=[1,2,3];
var fun=function(){}
var date=new Date();
var reg = /a/g;
var err=new Error()
var arg;
(function getArg(){
arg=arguments;
})();
console.log(typeof und); // undefined
console.log(typeof nul); // object
console.log(typeof boo); // boolean
console.log(typeof num); // number
console.log(typeof str); // string
console.log(typeof obj); // object
console.log(typeof arr); // object
console.log(typeof fun); // function
console.log(typeof date); // object
console.log(typeof reg); // object
console.log(typeof err); // object
console.log(typeof arg); // object
var toString=Object.prototype.toString;console.log(toString.call(und)); // [object Undefined]console.log(toString.call(nul)); // [object Null]console.log(toString.call(boo)); // [object Boolean]console.log(toString.call(num)); // [object Number]console.log(toString.call(str)); // [object String]console.log(toString.call(obj)); // [object Object]console.log(toString.call(arr)); // [object Array]console.log(toString.call(fun)); // [object Function]console.log(toString.call(date)); // [object Date]console.log(toString.call(reg)); // [object RegExp]console.log(toString.call(err)); // [object Error]console.log(toString.call(arg)); // [object Arguments][color=rgba(140, 140, 140, 0.8)]
/**
* @desc 数据类型检测
* @param obj 待检测的数据
* @return {String} 类型字符串
*/
function type(obj) {
var toString=Object.prototype.toString;
var toType = {};
var typeArr=['Undefined','Null','Boolean','Number','String','Object','Array','Function','Date','RegExp','Error','Arguments']
typeArr.map(function(item, index) {
toType["[object " + item + "]"] = item.toLowerCase();
})
return typeof obj !== "object" ? typeof obj : toType[toString.call(obj)];
}
/**
* @desc 是否是 Undefined 类型检测
* @param obj 待检测的数据
* @return {Boolean} 布尔值
*/
function isUndefined(obj) {
return obj === void 0;
}
/**
* @desc 是否是 Null 类型检测
* @param obj 待检测的数据
* @return {Boolean} 布尔值
*/
function isNull(obj) {
return obj === null;
}
/**
* @desc 是否是 Boolean 类型检测
* @param obj 待检测的数据
* @return {Boolean} 布尔值
*/
function isBoolean(obj) {
return typeof(obj) === 'boolean';
}
/**
* @desc 是否是 Number 类型检测
* @param obj 待检测的数据
* @return {Boolean} 布尔值
*/
function isNumber(obj) {
return typeof(obj) === 'number';
}
/**
* @desc 是否是 String 类型检测
* @param obj 待检测的数据
* @return {Boolean} 布尔值
*/
function isString(obj) {
return typeof(obj) === 'string';
}
/**
* @desc 是否是 Object 类型检测
* @param obj 待检测的数据
* @return {Boolean} 布尔值
*/
function isObject(obj) {
return Object.prototype.toString.call(obj) === '[object Object]';
}
/**
* @desc 是否是 Array 类型检测
* @param obj 待检测的数据
* @return {Boolean} 布尔值
*/
function isArray(obj){
return Array.isArray?Array.isArray(obj):Object.prototype.toString.call(obj) === '[object Array]';
}
/**
* @desc 是否是 Function 类型检测
* @param obj 待检测的数据
* @return {Boolean} 布尔值
*/
function isFunction(obj){
return typeof(obj) === 'function';
}
/**
* @desc 是否是 Date 类型检测
* @param obj 待检测的数据
* @return {Boolean} 布尔值
*/
function isDate(obj){
return Object.prototype.toString.call(obj) === '[object Date]';
}
/**
* @desc 是否是 RegExp 类型检测
* @param obj 待检测的数据
* @return {Boolean} 布尔值
*/
function isRegExp(obj){
return Object.prototype.toString.call(obj) === '[object RegExp]';
}
/**
* @desc 是否是 Error 类型检测
* @param obj 待检测的数据
* @return {Boolean} 布尔值
*/
function isError(obj){
return Object.prototype.toString.call(obj) === '[object Error]';
}
/**
* @desc 是否是 Arguments 类型检测
* @param obj 待检测的数据
* @return {Boolean} 布尔值
*/
function isArguments(obj){
return Object.prototype.toString.call(obj) === '[object Arguments]';
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |