JavaScript 学习笔记— —类型判断

//1 判断是否为数组类型
    var a=[0];
    console.log(isArray(a));
    function isArray(obj){
        return (typeof obj=='object') && obj.constructor==Array;
    }

    console.log("2-----------------------------------")
    //2 判断是否为字符串类型
    console.log(isString('test'));
    console.log(isString(10));
    function isString(str){
        return (typeof str=='string')&&str.constructor==String;
    }

    console.log("3-----------------------------------")
    //3 判断是否为数值类型
    console.log(isNumber('test'));
    console.log(isNumber(10));
    function isNumber(obj){
        return (typeof obj=='number')&&obj.constructor==Number;
    }

    console.log("4-----------------------------------")
    //4 判断是否为日期类型
    console.log(isDate(new Date()));
    console.log(isDate(10));
    function isDate(obj){
        return (typeof obj=='object')&&obj.constructor==Date;
    }

    console.log("5-----------------------------------")
    //5 判断是否为函数
    console.log(isFunction(function test(){}));
    console.log(isFunction(10));
    function isFunction(obj){
        return (typeof obj=='function')&&obj.constructor==Function;
    }

    console.log("6-----------------------------------")
    //6 判断是否为对象
    console.log(isObject(new Object()));
    console.log(isObject(10));
    function isObject(obj){
        return (typeof obj=='object')&&obj.constructor==Object;
    }

    /*
    * null 数组  日期 对象返回的是object类型
    */
// js数据类型: number   string    boolean   undefined   object和函数类型 function    

    console.log(typeof null)//object
    console.log(typeof Function)//function  Function是包装类型
    console.log(typeof undefined)//undefined

    var message;
    console.log(message)//undefined 定义了没有赋值
    console.log(typeof message)//undefined 类型
    console.log(null == undefined)//true

    /*
    * true==1;fase==0;
    * */
    console.log(true == 1)//true
    console.log(false == 0)//true
    console.log(false ==2)//false

    var str="";
    console.log(str==0);//true;空字符串将会把值转换为0
    console.log(typeof str)//string

  var str2=new String('A');
  console.log(str2) //
String { 0="A"}

原型扩展方法

Object.prototype.toString.call

    var gettype=Object.prototype.toString
    gettype.call('aaaa')             //[object String]
    gettype.call(2222)              //[object Number]
    gettype.call(true)              //[object Boolean]
    gettype.call(undefined)         //[object Undefined]
    gettype.call(null)              //[object Null]
    gettype.call({})                //[object Object]
    gettype.call([])                //[object Array]
    gettype.call(function(){})      //[object Function]

 

/*    其实js 里面还有好多类型判断
     [object HTMLDivElement]   div 对象  ,
    [object HTMLBodyElement]  body 对象
     ,[object Document](IE)或者  [object HTMLDocument](firefox,google) ......各种dom节点的判断,这些东西在我们写插件的时候都会用到。*/

    var   gettype=Object.prototype.toString
    var    utility={
        isObj:function(o){
            return    gettype.call(o)=="[object Object]";
        },

        isArray:function(o){
            return    gettype.call(o)=="[object Array]";
        },
        isNULL:function(o){
            return    gettype.call(o)=="[object Null]";
        },
        isDocument:function(){
            return    gettype.call(o)=="[object Document]"|| [object HTMLDocument];
        }
        //...
    }

 

原文地址:https://www.cnblogs.com/eaysun/p/4385803.html