JavaScript常用函数一之对象类型的判断

作为一名CSSer,在前端设计中难免要对返回的数据类型就行判断,但是javascript又没有判断对象类型的函数。所以就有了下面的内容:

/*
判断对象是否为函数
isFunction(function(){}); //->; true
isFunction(123);          //->; true
*/
function isFunction( obj ) {
  return toString.call(obj) === "[object Function]";
}
/*
判断对象是否为数组
isArray([]);   //-> true
isArray({ });  //-> false
*/
function isArray( obj ) {
  return toString.call(obj) === "[object Array]";
}
/*
判断是否为窗口的对象
isWindow(window)    //-> true
isWindow("window")  //-> false
*/
function isWindow( obj ) {
  return obj && typeof obj === "object" && "setInterval" in obj;
}

/*
判断对象是否为空对象
isEmptyObject({})              //->; true
isEmptyObject({ foo: "bar" })  //->; false
*/
function isEmptyObject( obj ) {
  for ( var name in obj ) {
    return false;
  }
  return true;
}

/*
判断对象是否为字符串
isString("foo");  //-> true
isString("");     //-> true
isString(123);    //-> false
*/
function isString(obj) {
  return toString.call(obj) === "[object String]";
}

/*
判断对象是否为数字
isNumber(0);      //-> true
isNumber(1.2);    //-> true
isNumber("12");   //-> false
*/
function isNumber(obj) {
  return toString.call(obj) === "[object Number]";
}

/*
判断对象是否为日期
isDate(new Date);                          //-> true
isDate("Dec 25, 1995");                    //-> false
isDate(new Date("Dec 25, 1995"));          //-> true
*/
function isDate(obj) {
  return toString.call(obj) === "[object Date]";
}

/*
判断对象是否为布尔值
isBoolean(true);        //-> true
isBoolean("true");      //-> false
*/
function isBoolean(obj) {
  return toString.call(obj) === "[object Boolean]";
}

/*
判断对象是否为null
isNull(null);        //-> true
isDate("null");      //-> false
*/
function isNull(obj) {
 return  obj === null;
}

/*
判断对象是否为undefined
isUndefined(undefined);       //-> true
isUndefined();                //-> true
isUndefined("undefined");     //-> false
*/
function isUndefined(obj) {
  return  obj === undefined;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注