检查对象是否是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运算符:

obj instanceof jQuery

说明jQuery函数(又名$ )是作为构造函数实现的。 构造函数的功能将使用new前缀进行调用。

当你调用$(foo) ,内部jQuery将其转换为new jQuery(foo) 1. JavaScript继续在构造函数内部初始化this ,以指向jQuery一个新实例,并将其设置为jQuery.prototype上的那些属性jQuery.fn )。 因此,你会得到一个new对象, instanceof jQuerytrue


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


您也可以按照此处所述使用.jquery属性:http://api.jquery.com/jquery-2/

var a = { what: "A regular JS object" },
b = $('body');

if ( a.jquery ) { // falsy, since it's undefined
    alert(' a is a jQuery object! ');    
}

if ( b.jquery ) { // truthy, since it's a string
    alert(' b is a jQuery object! ');
}

查看instanceof操作符。

var isJqueryObject = obj instanceof jQuery
链接地址: http://www.djcxy.com/p/2409.html

上一篇: Check if object is a jQuery object

下一篇: Change the selected value of a drop