是否有一种快速的方法来检查一个对象是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操作符。

var isJqueryObject = obj instanceof jQuery

其他回答

签出instanceof操作符。

var isJqueryObject = obj instanceof jQuery
return el instanceof jQuery ? el.size() > 0 : (el && el.tagName);
var elArray = [];
var elObjeto = {};

elArray.constructor == Array //TRUE
elArray.constructor == Object//TALSE

elObjeto.constructor == Array//FALSE
elObjeto.constructor == Object//TRUE

对于那些想要在没有安装jQuery的情况下知道一个对象是否是jQuery对象的人来说,下面的代码片段应该可以完成工作:

function isJQuery(obj) {
  // All jQuery objects have an attribute that contains the jQuery version.
  return typeof obj === "object" && obj != null && obj.jquery != null;
}

但是,在jQuery中还有一种检查对象的方法。

jQuery.type(a); //this returns type of variable.

我已经做出了例子来理解事情,jsfiddle链接