21°

javascript 数据类型判断总结

一 typeof

回顾:js有五种基本数据类型:值类型("number","string","boolean","undefined") 和引用类型 (“object”),其中“object” 又包含“array,function,null”等数据类型。
** typeof 可以判断所有的值类型"number","string","boolean","undefined"和引用类型中的‘function’ 类型,其余所有的引用类型都只能返回‘object’。
typeof 能返回6中数据类型。

type of 1;//"number"
type of 'test';//"string"
type of true;//"boolean"
type of undefined;//"undefined"
type of console.log;//"function"
type of null;//"object"
type of [];//"object"
type of {};//"object"

二 instanceof

判断 Array,Function,缺点:不能判断null 和Date等数据类型

function utility(){
    return {
        isAarry:(data)=> data instanceof  Array,
        isFunction:()=> data instanceof Function
    }
}

三 Object.prototype.toString

优点:所有的数据类型都能判断
原理:一切皆对象
js 里面还有好多类型判断 [object HTMLDivElement] div 对象 , [object HTMLBodyElement] body 对象 ,object Document或者 [object HTMLDocument](firefox,google) ......各种dom节点的判断,这些东西在我们写插件的时候都会用到。

function utility(){
    return {
        isArray:(o)=>Object.prototype.toString.call(o) == "[object Array]",
        isObj:(o)=>Object.prototype.toString.call(o) == "[object Object]",
        isNull:(o)=>Object.prototype.toString.call(o) == "[object Null]",
        isFunction:(o)=>Object.prototype.toString.call(o) == "[object Function]",
        isDate:(o)=>Object.prototype.toString.call(o) == "[object Date]", 
        isDocument:(o)=>Object.prototype.toString.call(o) =="[object Document]"|| Object.prototype.toString.call(o) == "[object HTMLDocument]",
        isNumber:(o)=>Object.prototype.toString.call(o) == "[object Number]", 
        isString:(o)=>Object.prototype.toString.call(o) == "[object String]", 
        isUndefined:(o)=>Object.prototype.toString.call(o) == "[object Undefined]", 
        isBoolean:(o)=>Object.prototype.toString.call(o) == "[object Boolean]", 
    }
}

原文链接:https://www.cnblogs.com/honkerzh/p/10838212.html

全部评论: 0

    我有话说: