详解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种类型识别方法,希望大家喜欢。