• 判断各种数据类型的方法总结


    1.typeof 

    type of  ...判断数据类型

    number返回number

    string返回string

    boolean返回boolean

    undefined返回undefined

    null返回object

    function返回function

    object返回object

    array返回object

    NAN返回number

    2.instanceof

    检查某对象是否属于某类型

    instanceof是通过原型链来检查类型的,所以适用于任何”object”的类型检查。

     3.toString

         

         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]

        4. constructor也能判断数据类型:

         如:    

     ''.constructor==String    
    
     [].constructor==Array
    
     var obj= new Object()   obj.constructor==Object

    检查所有数据类型的方法

    function checkType (obj) {
         return Object.prototype.toString.call(obj).slice(8,-1)
    }    

    类型检测总结

    ==typeof==只能检测基本数据类型,对于null还有Bug;
    ==instanceof==适用于检测对象,它是基于原型链运作的;
    ==constructor==指向的是最初创建者,而且容易伪造,不适合做类型判断;
    ==Object.prototype.toString==适用于ECMA内置JavaScript类型(包括基本数据类型和内置对象)的类型判断;
    基于引用判等的类型检查都有跨窗口问题,比如instanceof和constructor。
    总之,如果你要判断的是基本数据类型或JavaScript内置对象,使用toString; 如果要判断的时自定义类型,请使用instanceof。

  • 相关阅读:
    Java实现旅行商问题
    Java实现旅行商问题
    Java实现旅行商问题
    Java实现旅行商问题
    递归执行顺序的探究
    递归执行顺序的探究
    递归执行顺序的探究
    配置我的Ubuntu Server记(包括桌面及VNC,SSH,NTP,NFS服务) good
    罗辑思维 137 藩镇割据:毒药还是良药?(要懂得自我收敛?不要什么事情都自己做?)
    云计算CTO工作的具体内容(挺详细)
  • 原文地址:https://www.cnblogs.com/baixiaoxiao/p/12322591.html
Copyright © 2020-2023  润新知