In diesem Artikel werden allgemeine Js-Typerkennungsmethoden aufgeführt, die einen kleinen Teil des Aufbaus des Js-Wissenssystems darstellen.
Undefiniert, Null, Boolean, String, Number( Enthält NaN)
NaN entspricht keinem Werttyp, einschließlich NaN; isNaN wird verwendet, um zu bestimmen, ob der Wert vom NaN-Typ ist
1. isFinite Ist (Zahl)
unendlich? Wenn nicht, geben Sie true zurück. Wenn es sich um eine positive oder negative Unendlichkeit oder einen nicht numerischen Typ handelt, geben Sie false
typeof zurück
Bei Verwendung Leerzeichen oder Typ von (Param)
Rückgabewert
Zeichenfolge
Zahl
boolean
undefiniert
Funktion
Objekt null gibt auch Objekt zurück
Basierend auf dem oben Gesagten kann der Beurteilungstyp wie folgt sein:
var obtainType = function(o){ var t; if(o === null ) return “null”; else if(o !== o) return “NaN”; else if( (t = typeof o) !== ‘object’) return t; }
Sie können Null- und NaN-String-Nummern als boolesche undefinierte Funktion identifizieren.
Am Ende bleibt nur noch ein Objekt übrig, z. B. Identifizierung von Arrays und Identifizierung benutzerdefinierter Typen
3 Um native Typen wie Arrays zu identifizieren, kann Folgendes erfolgen verwendet
function obtainType(type) { return function (obj) { return Object.prototype.toString.call(obj) === "[object " + type + "]" } } var isObject = isType("Object") var isString = isType("String") var isArray = Array.isArray || isType("Array") var isFunction = isType("Function")
4. Benutzerdefinierte Typbeurteilung
/** * 返回函数的名字,可能为空串;不是函数,返回null */ Function.prototype.getName = function () { if ("name" in this) return this.name; return this.name = this.toString().match(/function\s*([^(]*)\(/)[1]; };
Es können sowohl native als auch benutzerdefinierte Typobjekte beurteilt werden, also
/** * 返回:null NaN undefined string number boolean * function Array String Object(包括一些自定义类型) 自定义类型 */ var obtainType =function(o){ /** * 获取参数类型 * 对象直接量、Object.create、自定义构造函数的类属性皆为Object; * 识别出原生类型 (内置构造函数和宿主对象) */ function classOf(obj){ return Object.prototype.toString.call(obj).slice(8, -1); } /** * 返回函数的名字,可能为空串;不是函数,返回null */ Function.prototype.getName = function () { if ("name" in this) return this.name; return this.name = this.toString().match(/function\s*([^(]*)\(/)[1]; }; var t, c, n; // 处理null值特殊情形 if (o === null) return "null"; // NaN:和自身值不相等 if (o !== o) return "NaN"; // 识别出原生值类型和函数、undefined if ((t = typeof o) !== "object") return t; // 识别出原生类型 if ((c = classOf(o)) !== "Object") return c; // 返回自定义类型构造函数名字 if (o.constructor && typeof o.constructor === "function" && (n = o.constructor.getName())) return n; return "Object"; };
5.
var strObj = new String('abc'); typeof strObj // "object" obtainType(strObj) // "String"
1. Dom-Element-Beurteilung
if(dom.nodeType){…Dom…}
if(dom.createElement)
2. jQuery und andere Typbeurteilungen
$('#aa')-Instanz von jQuery//unterstützt nicht das Überspannen mehrerer Fenster und FramesUnterseiten
3. if(a) a is null undefined 0 "" NaN wird automatisch in false konvertiert
Allgemein empfohlene Schreibmethode
// bad if (name !== '') { // ...stuff... } // good if (name) { // ...stuff... } // bad if (collection.length > 0) { // ...stuff... } // good if (collection.length) { // ...stuff... }
Das obige ist der detaillierte Inhalt vonZusammenfassung der Methoden zur Datentyperkennung in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!