Check if object is a jQuery object
Is there a fast way of checking if an object is a jQuery object or a native JavaScript object?
example:
var o = {};
var e = $('#element');
function doStuff(o) {
if (o.selector) {
console.log('object is jQuery');
}
}
doStuff(o);
doStuff(e);
obviously, the code above works but it's not safe. You could potentially add a selector key to the o
object and get the same result. Is there a better way of making sure that the object actually is a jQuery object?
Something in line with (typeof obj == 'jquery')
You can use the instanceof
operator:
obj instanceof jQuery
Explanation : the jQuery
function (aka $
) is implemented as a constructor function. Constructor functions are to be called with the new
prefix.
When you call $(foo)
, internally jQuery translates this to new jQuery(foo)
1. JavaScript proceeds to initialize this
inside the constructor function to point to a new instance of jQuery
, setting it's properties to those found on jQuery.prototype
(aka jQuery.fn
). Thus, you get a new
object where instanceof jQuery
is true
.
1It's actually new jQuery.prototype.init(foo)
: the constructor logic has been offloaded to another constructor function called init
, but the concept is the same.
您也可以按照此处所述使用.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/2410.html
上一篇: 获取原始目标的最佳方法
下一篇: 检查对象是否是jQuery对象