Comprobación generalizada de longitud de las funciones.

Cuando escribo una función en JS o jQuery y se requiere un parámetro, uso el truco if something.length

 this.example = function(e) { if ($(e).length) { /*blablabla*/ } else { return false; } } 

Pero no quiero hacer esto en todas las funciones. ¿Hay alguna manera de generalizar esto?

me gusta:

 this.ck = function(e) { return function(e){ if (!(e.length)) { return false;} } } this.example = function(e) { ck(e) /*blablabla*/ } 

Tal vez esto, pero ver más abajo:

 function ifNonEmpty(f) { return function(e) { if (!$(e).length) return false; return f(e); }; } 

Lo usarías así:

 var myCoolFunction = ifNonEmpty(function myCoolFunction(e) { // your implementation }; 

Sin embargo, sugeriría que en lugar de escribir funciones que tomen objetos jQuery como parámetros, escriba esas funciones como sus propios complementos jQuery.

Sugeriría lo siguiente.

Este ejemplo probaría primero si el parámetro realmente contiene algo (es decir, no es nulo), luego su comprobación de longitud podría estar en si

 function isNonEmpty(p){ if ( (p != null) && (p.length > 0) ){ //test } } 

Sería desconfiado de usar .length, de todos modos. Por ejemplo, si pasa una cadena .length tendrá un valor!

Para probar si algo es un objeto jQuery:

 alert(p instanceof jQuery); //will alert "true" if p is a jQuery object. 

Entonces, esto nos da:

 function isNonEmpty(p){ if ( (p != null) && (p instanceof jQuery) && (p.length > 0) ){ //test } } 

O algo de ese tipo. De cualquier manera, debe haber suficiente código para adaptarse a su intención.