检查对象是否为jQuery对象

是否有一种快速检查对象是jQuery对象还是本机JavaScript对象的方法

例如:

var o={};
变量e=$(“#元素”);
函数doStuff(o){
如果(o.选择器){
log('对象是jQuery');
}
}
多斯塔夫(o);
多斯塔夫(e);

显然,上面的代码可以工作,但并不安全。您可能会向o对象添加一个选择器键,并获得相同的结果。有没有更好的方法来确保对象实际上是jQuery对象

(typeof obj==“jquery”)一致的内容

您可以使用instanceof运算符:

if(jQuery的obj实例){
log('对象是jQuery');
}

解释:jQuery函数(aka$)作为构造函数实现。构造函数将使用new前缀调用

调用$(foo)时,jQuery会在内部将其转换为newjQuery(foo)1。JavaScript继续在构造函数中初始化这个,指向jQuery的新实例,将其属性设置为jQuery.prototype(akajQuery.fn)上的属性。因此,您将得到一个新的对象,其中jQuery的实例true


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

发表评论