检查对象是否是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 jQuery
为true
。
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