Heim  >  Artikel  >  Web-Frontend  >  Zusammenfassung der Methoden zur Datentyperkennung in JavaScript

Zusammenfassung der Methoden zur Datentyperkennung in JavaScript

黄舟
黄舟Original
2017-03-14 15:08:541103Durchsuche

In diesem Artikel werden allgemeine Js-Typerkennungsmethoden aufgeführt, die einen kleinen Teil des Aufbaus des Js-Wissenssystems darstellen.

1. Es gibt 5 grundlegende -Datentypen in Js

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

2. Typbeurteilung

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"

3. Andere

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn