オブジェクトがjQueryオブジェクトかどうかを確認する 質問する

オブジェクトがjQueryオブジェクトかどうかを確認する 質問する

オブジェクトが jQuery オブジェクトかネイティブ JavaScript オブジェクトかを素早く確認する方法はありますか?

例:

var o = {};
var e = $('#element');

function doStuff(o) {
    if (o.selector) {
        console.log('object is jQuery');
    }
}

doStuff(o);
doStuff(e);

明らかに、上記のコードは機能しますが、安全ではありません。oオブジェクトにセレクター キーを追加して、同じ結果を得ることもできます。オブジェクトが実際に jQuery オブジェクトであることを確認するより良い方法はありますか?

それに沿うもの(typeof obj == 'jquery')

ベストアンサー1

あなたはinstanceofオペレーター:

if (obj instanceof jQuery){
    console.log('object is jQuery');
}

説明jQuery関数(別名$)は、コンストラクタ関数コンストラクター関数はプレフィックスを付けて呼び出されますnew

を呼び出すと$(foo)、jQuery は内部的にこれをnew jQuery(foo)1に変換します。JavaScript は、thisコンストラクター関数内で の新しいインスタンスを指すように初期化を進めjQuery、そのプロパティをjQuery.prototype(別名jQuery.fn) にあるプロパティに設定します。したがって、であるnewオブジェクトが得られます。instanceof jQuerytrue


1実際にはnew jQuery.prototype.init(foo)、コンストラクター ロジックは と呼ばれる別のコンストラクター関数にオフロードされていますinitが、概念は同じです。

おすすめ記事