depende del funcionamiento interno de jQuery, pero me gustaría ir con
obj instanceof jQuery
Es el más es 'JavaScript camino' de hacerlo Tenga en cuenta que fallará al pasar objetos entre los límites de la ventana/cuadro.
sugerencia de Tomalak
'jquery' in obj
debería funcionar en este caso, por lo que se debe utilizar si va a hacer el intercambio de datos multi-ventana. No lo recomendaría como una solución general, ya que simplemente buscar una propiedad llamada 'jquery'
no es muy confiable.
El operador in
también arrojará un error si obj
es una primitiva. Si este comportamiento no es deseado, es posible considerar el uso de una de estas pruebas en su lugar:
obj && obj.jquery
'jquery' in Object(obj)
encuentro el segundo más atractivo, pero el primero probablemente será más rápido.
Comprobación
Object(obj).hasOwnProperty('jquery')
fallará, como jQuery objetos sólo hereda la propiedad de su prototipo.
me gustaría también desalentar el uso de la propiedad constructor
para la comprobación de tipos en JavaScript - Puede que funcione de forma fiable para jQuery, pero como constructor
es sólo una propiedad del objeto apuntado por la propiedad de la función constructora prototype
en el momento de instancias, hay muchas maneras de meterse con este tipo de pruebas ...
Como nota al margen:
jQuery sí cheques para obj && obj.jquery
. No usa instanceof
ni una sola vez. En su lugar, utiliza una combinación de typeof
, pato-tipado y toString.call()
para verificación de tipo, que debería funcionar donde instanceof
fallará.
Además, hasOwnProperty()
nunca se utiliza también. No estoy seguro de lo que dice esto sobre la calidad del código de la biblioteca jQuery;)
Mucho más detallado que mi publicación: +1 y recomiendo que su publicación sea elegida como la respuesta – VonC
¡Obtuve mi voto por mencionar la falla de instanceof en los límites de ventanas/marcos! –
Entonces, ¿cuál es el mejor? – Kato