小编典典

检查对象是否为 jQuery 对象

all

有没有一种快速检查对象是 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')


阅读 132

收藏
2022-03-04

共1个答案

小编典典

您可以使用instanceof运算符:

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

说明 :该jQuery函数(又名$)被实现为构造函数。构造函数将使用new前缀调用。

当您调用 时$(foo),jQuery 在内部将其转换为new jQuery(foo)1。JavaScript
继续this在构造函数内部初始化以指向 的新实例jQuery,并将其属性设置为在jQuery.prototype(aka
jQuery.fn) 上找到的属性。因此,你得到一个new对象 where instanceof jQueryis true


1它实际上是new jQuery.prototype.init(foo):构造函数的逻辑已经被卸载到另一个名为的构造函数init,但概念是一样的。

2022-03-04