有没有快速检查对象是 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
函数(又名$
)实现为constructor function .构造函数将使用 new
前缀调用。
当您调用 $(foo)
时,jQuery 在内部将其转换为 new jQuery(foo)
1。 JavaScript 继续在构造函数中初始化 this
以指向 jQuery
的新实例,并将其属性设置为在 jQuery.prototype
上找到的属性(又名 jQuery.fn
)。因此,您会得到一个 new
对象,其中 instanceof jQuery
是 true
。
1其实是new jQuery.prototype.init(foo)
:构造器逻辑已经卸载到另一个构造器函数init
,但概念是一样的。
关于javascript - 检查对象是否为 jQuery 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1853223/