js判断数据类型的⼏种⽅式
⼀ typeof
回顾:js有五种基本数据类型:值类型("number","string","boolean","undefined") 和引⽤类型(“object”),其中“object” ⼜包
含“array,function,null”等数据类型。
typeof 可以判断所有的值类型"number","string","boolean","undefined"和引⽤类型中的‘function’ 类型,其余所有的引⽤类型都只能返回‘object’。typeof array
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
优点:可以判断某个对象是否是由某个构造函数new 出来的,凡是通过构造函数创建的都能进⾏判断
例如:
//构造函数假如被当作普通函数直接执⾏抛出错误
function Person (){
if(!(this instanceof Person)){ // 当Person被直接执⾏时,this在⾮严格模式下是指向window的,⽽被当作构造函数时,this 是指由Person new出来的对象
throw new Error(‘Person为构造函数,请使⽤ new Person’);
}
}
缺点:不能判断null 类型以及⾮new 出来的的值类型,不能精确的区分array、function和object
function utility(){
return {
isAarry:(data)=> data instanceof Array,
isFunction:()=> data instanceof Function
}
}
三 String
优点:所有的数据类型都能判断
原理:⼀切皆对象
js ⾥⾯还有好多类型判断 [object HTMLDivElement] div 对象 , [object HTMLBodyElement] body 对象 ,或者 [object HTMLDocument](firefox,google) ......各种dom节点的判断,这些东西在我们写插件的时候都会⽤到。
function utility(){
return {
isArray:(o)=>String.call(o) == "[object Array]",
isObj:(o)=>String.call(o) == "[object Object]",
isNull:(o)=>String.call(o) == "[object Null]",
isFunction:(o)=>String.call(o) == "[object Function]",
isDate:(o)=>String.call(o) == "[object Date]",
isDocument:(o)=>String.call(o) =="[object Document]"|| String.
call(o) == "[object HTMLDocument]",
isNumber:(o)=>String.call(o) == "[object Number]",
isString:(o)=>String.call(o) == "[object String]",
isUndefined:(o)=>String.call(o) == "[object Undefined]",
isBoolean:(o)=>String.call(o) == "[object Boolean]",
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论