Vor kurzem habe ich ein neues Verständnis für die Überprüfung von JavaScript-Datentypen gewonnen. Es stellt sich heraus, dass es so einfach und umfassend beurteilt werden kann.
Wir haben die Methoden isString, isNumber, isDate, isError, isRegExp, isBoolean, isNull, isUndefined, isObject und andere angepasst. Zeigen Sie nun die von Ihnen definierte Funktion zur Überprüfung des Javascript-Datentyps und den Testsatz an:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> </body> <script type="text/javascript"> //isString //isNumber //isDate //isError //isRegExp //直接利用和数据类型来判断 [].forEach.call(['String','Number','Date','Error','RegExp'],function(name){ this['is'+name]=function(obj){ return toString.call(obj)==='[object '+name+']'; }; }); //isBoolean //true和false需要考虑在内 Object.prototype.isBoolean=function(obj){ return obj===true||obj===false||toString.call(obj)==='[object Boolean]'; }; //isNull //未找到所指向对象 Object.prototype.isNull=function(obj){ return obj===null; }; //isUndefined //定义了但是未赋值 Object.prototype.isUndefined=function(obj){ return obj===void 0; }; //isObject //函数和数组都是对象 Object.prototype.isObject=function(obj){ var type = typeof obj; return type === 'function' || type === 'object' && !!obj; }; //test //isString var str="iamstring"; var a=isString(str); console.log(a);//true //isNumber var b=isNumber(a); console.log(b);//false //isNumber var num=4; var c=isNumber(num); console.log(c);//true //isRegExp var reg=/^[1-9]/; var d=isRegExp(reg); console.log(d);//true //isDate var date=new Date(); var e=isDate(date); console.log(e);//true //isBoolean var bool=false; var f=isBoolean(bool); console.log(f);//true //isNull var nul=document.getElementById("div02"); var g=isNull(nul); console.log(g);//true //isUndefined var undef; var h=isUndefined(undef); console.log(h);//true //isObject var obj={"1":"1","2":"2"}; var i=isObject(obj); console.log(i);//true </script> </html>
Das Folgende ist eine detaillierte Einführung in die Beurteilung des Datentyps von JavaScript, der in sechs Datentypen unterteilt ist. Ich hoffe, dass es für alle hilfreich ist
1. Bestimmen Sie, ob es sich um einen Array-Typ handelt
Der Code lautet wie folgt:
<STRONG><script type="text/javascript"> //<![CDATA[ var a=[0]; document.write(isArray(a),'<br/>'); function isArray(obj){ return (typeof obj=='object')&&obj.constructor==Array; } //]]> </script></STRONG>
2 Bestimmen Sie, ob es sich um einen String-Typ handelt
Der Code lautet wie folgt:
<script type="text/javascript"> //<![CDATA[ document.write(isString('test'),'<br/>'); document.write(isString(10),'<br/>'); function isString(str){ return (typeof str=='string')&&str.constructor==String; } //]]> </script>
3 Bestimmen Sie, ob es sich um einen numerischen Typ handelt
Der Code lautet wie folgt:
<script type="text/javascript"> //<![CDATA[ document.write(isNumber('test'),'<br/>'); document.write(isNumber(10),'<br/>'); function isNumber(obj){ return (typeof obj=='number')&&obj.constructor==Number; } //]]> </script>
4 Bestimmen Sie, ob es sich um einen Datumstyp handelt
Der Code lautet wie folgt:
<script type="text/javascript"> //<![CDATA[ document.write(isDate(new Date()),'<br/>'); document.write(isDate(10),'<br/>'); function isDate(obj){ return (typeof obj=='object')&&obj.constructor==Date; } //]]> </script>
5 Bestimmen Sie, ob es sich um eine Funktion handelt
Der Code lautet wie folgt:
<script type="text/javascript"> //<![CDATA[ document.write(isFunction(function test(){}),'<br/>'); document.write(isFunction(10),'<br/>'); function isFunction(obj){ return (typeof obj=='function')&&obj.constructor==Function; } //]]> </script>
6 Bestimmen Sie, ob es sich um ein Objekt handelt
Der Code lautet wie folgt:
<script type="text/javascript"> linenum //<![CDATA[ document.write(isObject(new Object()),'<br/>'); document.write(isObject(10),'<br/>'); function isObject(obj){ return (typeof obj=='object')&&obj.constructor==Object; } //]]> </script>