详解JavaScript中的4种类型识别方法
具体内容如下:
1.typeof
【输出】首字母小写的字符串形式
【功能】
[a]可以识别标准类型(将Null识别为object)
[b]不能识别具体的对象类型(Function除外)
【实例】
console.log(typeof"jerry");//"string" console.log(typeof12);//"number" console.log(typeoftrue);//"boolean" console.log(typeofundefined);//"undefined" console.log(typeofnull);//"object" console.log(typeof{name:"jerry"});//"object" console.log(typeoffunction(){});//"function" console.log(typeof[]);//"object" console.log(typeofnewDate);//"object" console.log(typeof/\d/);//"object" functionPerson(){}; console.log(typeofnewPerson);//"object"
2.Object.prototype.toString
【输出】[object数据类型]的字符串形式
【功能】
[a]可以识别标准类型及内置对象类型
[b]不能识别自定义类型
【构造方法】
functiontype(obj){ returnObject.prototype.toString.call(obj).slice(8,-1).toLowerCase(); }
【实例1】
console.log(Object.prototype.toString.call("jerry"));//[objectString] console.log(Object.prototype.toString.call(12));//[objectNumber] console.log(Object.prototype.toString.call(true));//[objectBoolean] console.log(Object.prototype.toString.call(undefined));//[objectUndefined] console.log(Object.prototype.toString.call(null));//[objectNull] console.log(Object.prototype.toString.call({name:"jerry"}));//[objectObject] console.log(Object.prototype.toString.call(function(){}));//[objectFunction] console.log(Object.prototype.toString.call([]));//[objectArray] console.log(Object.prototype.toString.call(newDate));//[objectDate] console.log(Object.prototype.toString.call(/\d/));//[objectRegExp] functionPerson(){}; console.log(Object.prototype.toString.call(newPerson));//[objectObject]
【实例2】
functiontype(obj){ returnObject.prototype.toString.call(obj).slice(8,-1).toLowerCase(); } console.log(type("jerry"));//"string" console.log(type(12));//"number" console.log(type(true));//"boolean" console.log(type(undefined));//"undefined" console.log(type(null));//"null" console.log(type({name:"jerry"}));//"object" console.log(type(function(){}));//"function" console.log(type([]));//"array" console.log(type(newDate));//"date" console.log(type(/\d/));//"regexp" functionPerson(){}; console.log(type(newPerson));//"object"
3.constructor
【输出】function数据类型(){[nativecode]}或者function自定义类型(){}
【功能】
[a]可以识别标准类型、内置对象类型及自定义类型
[b]不能识别undefined、null,会报错
【构造方法】
functiontype(obj){ vartemp=obj.constructor.toString(); returntemp.replace(/^function(\w+)\(\).+$/,'$1'); }
【实例1】
console.log(("jerry").constructor);//functionString(){[nativecode]} console.log((12).constructor);//functionNumber(){[nativecode]} console.log((true).constructor);//functionBoolean(){[nativecode]} //console.log((undefined).constructor);//报错 //console.log((null).constructor);//报错 console.log(({name:"jerry"}).constructor);//functionObject(){[nativecode]} console.log((function(){}).constructor);//functionFunction(){[nativecode]} console.log(([]).constructor);//functionArray(){[nativecode]} console.log((newDate).constructor);//functionDate(){[nativecode]} console.log((/\d/).constructor);//functionRegExp(){[nativecode]} functionPerson(){}; console.log((newPerson).constructor);//functionPerson(){}
【实例2】
functiontype(obj){ vartemp=obj.constructor.toString().toLowerCase(); returntemp.replace(/^function(\w+)\(\).+$/,'$1'); } console.log(type("jerry"));//"string" console.log(type(12));//"number" console.log(type(true));//"boolean" //console.log(type(undefined));//错误 //console.log(type(null));//错误 console.log(type({name:"jerry"}));//"object" console.log(type(function(){}));//"function" console.log(type([]));//"array" console.log(type(newDate));//"date" console.log(type(/\d/));//"regexp" functionPerson(){}; console.log(type(newPerson));//"person"
4.instanceof
【输出】true或false
【功能】
[a]可以识别内置对象类型、自定义类型及其父类型
[b]不能识别标准类型,会返回false
[c]不能识别undefined、null,会报错
【实例】
console.log("jerry"instanceofString);//false console.log(12instanceofNumber);//false console.log(trueinstanceofBoolean);//false //console.log(undefinedinstanceofUndefined);//报错 //console.log(nullinstanceofNull);//报错 console.log({name:"jerry"}instanceofObject);//true console.log(function(){}instanceofFunction);//true console.log([]instanceofArray);//true console.log(newDateinstanceofDate);//true console.log(/\d/instanceofRegExp);//true functionPerson(){}; console.log(newPersoninstanceofPerson);//true console.log(newPersoninstanceofObject);//true
以上内容就是详解JavaScript中的4种类型识别方法,希望大家喜欢。