是否有一种快速的方法来检查一个对象是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函数(又名$)是作为构造函数实现的。构造函数将使用新前缀调用。
当调用$(foo)时,jQuery内部会将其转换为新的jQuery(foo)1。JavaScript继续在构造函数中初始化它,以指向一个新的jQuery实例,并将它的属性设置为jQuery上的属性。prototype(又名jQuery.fn)。因此,您将得到一个新对象,其中instanceof jQuery为真。
它实际上是新的jQuery.prototype.init(foo):构造函数逻辑已经被卸载给另一个构造函数init,但概念是一样的。