一尘不染

检查对象是否为jQuery对象

javascript

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


阅读 309

收藏
2020-05-01

共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对象instanceof jQuerytrue


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

2020-05-01