ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptにおけるデータ型検出方法のまとめ

JavaScriptにおけるデータ型検出方法のまとめ

黄舟
黄舟オリジナル
2017-03-14 15:08:541104ブラウズ

この記事では、一般的な Js 型検出方法をリストします。これは、Js 知識システムの構築の一部です。

1. Js には 5 つの基本的な データ型があります

Unknown、Null、Boolean、String、Number (NaN を含む)

NaN は、NaN を含むどのタイプの値とも等しくありません。値が NaN 型かどうかを判定する

2. 型判定

1. isFinite(number)
そうでない場合は、NaN であるか、正または負の無限大である場合に true を返します。 typeof

operator

が使用されている場合、spaceまたはtypeof(param)

string

number

boolean
unknown
function

が使用される場合、false
2を返します。 object null は object

も返します。 上記によれば、判定の種類は次のようになります:

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;
}

は null、NaN 文字列数値、ブール値未定義関数を識別できます。

上記では、配列の識別、カスタム型の識別

3などのオブジェクトのみが残っています。配列やその他のネイティブ型を識別するには、次の

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")

ネイティブ型の判定を使用できます。とカスタムタイプのオブジェクトも判定できるので

/**
 * 返回函数的名字,可能为空串;不是函数,返回null
 */
Function.prototype.getName = function () {
    if ("name" in this) return this.name;
    return this.name = this.toString().match(/function\s*([^(]*)\(/)[1];
};

5.

/**
 * 返回: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";
};

III.

その他

1. Dom要素判定

if(dom.nodeType){…Dom…}

if(dom.createElement)
2 falseに自動変換
一般的に推奨される書き方

var strObj = new String('abc');

typeof strObj // "object"

obtainType(strObj) // "String"

以上がJavaScriptにおけるデータ型検出方法のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。