javascript - 检查对象是否为 jQuery 对象

标签 javascript jquery

有没有快速检查对象是 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 jQuerytrue


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

关于javascript - 检查对象是否为 jQuery 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1853223/

相关文章:

javascript - jQuery 日期/时间选择器未通过 .serialize() 序列化)

javascript - 在 Javascript 中解析 BBCode

javascript - 如何在 Bootstrap 日期选择器上调用更改事件?

javascript - 为什么字符编码对 URL 很重要?

jquery - 尝试创建 CSS 下拉菜单时未定义接收 '$'

javascript - AngularJs:列表未显示在 ng-Bind 或 ng-model 中

javascript - 删除按钮的父级

jquery - 无序列表中滑动导航内容溢出:hidden

javascript - shell.js 中的 Durandal viewChanged 事件

jquery - Knockout.js:ko.toJSON 不会将 viewmodel 转换为 JSON