Cómo detectar es un object argumento jQuery

Quiero crear una function que se pueda usar con Id o al pasar el object jQuery.

var $myVar = $('#myId'); myFunc($myVar); myFunc('myId'); function myFunc(value) { // check if value is jQuery or string } 

¿Cómo puedo detectar qué tipo de argumento se pasó a la function?

¡Nota! Esta pregunta no es lo mismo. No quiero pasar string selector como #id.myClass . Quiero pasar el object jQuery como en el ejemplo.

Use el operador de typeof

 if ( typeof value === 'string' ) { // it's a string } else { // it's something else } 

O para asegurarse de que es una instancia del object jQuery

 if ( typeof value === 'string' ) { // it's a string } else if ( value instanceof $) { // it's a jQuery object } else { // something unwanted } 

Cada object jquery tiene una propiedad jquery . Esto fallará, por supuesto, si su object tiene propiedad jquery … pero puede tener una comprobación más estricta si lo desea …

 function(o) { if(typeof o == 'object' && o.jquery) // it's jquery object. } 

¿No sería suficiente verificar el tipo de argumento?

 function myfunc(arg) { if(typeof arg == 'string') { } else if(typeof arg == 'object') { } } 

Mira este violín .

Prueba esto:

 function myFunc(value) { if(typeof value === 'object') { } else{ } } 

Intenta usar typeof, por ejemplo:

 var $myVar = $('#myId'); myFunc($myVar); myFunc('myId'); function myFunc( value ){ // check if value is jQuery or string switch( typeof value ) { case 'object': // is object break; case 'string': // is string break; // etc etc. } } 
 function myFunc(value) { if (typeof value == "string") { //it's a string } else if (value != null && typeof value == "object"} { //it's an object (presumbly jQuery object) } else { //it's null or something else } } 
 function myFunc(value) { if(typeof(value) == 'string') //this is a string else if (value === jQuery) //this is jQuery else if (typeof(value) == 'object') //this is an object } 

NOTA: hizo esto en la console:

 > jQuery function (a,b){return new e.fn.init(a,b,h)} > var value = jQuery undefined > value function (a,b){return new e.fn.init(a,b,h)} > value === jQuery true