1. ホーム
  2. javascript

[解決済み] オブジェクトがjQueryオブジェクトであるかどうかを確認する

2022-03-15 03:42:11

質問

オブジェクトが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')

解決方法は?

を使用することができます。 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 しかし、コンセプトは同じです。