Sí, lo siento, no sé en qué estaba pensando. No es que hubiera un error, había varios..
Código PHP:
Array.prototype.in_array=function(elem){
if( !this.convertido ) {
this.convertido = new Array();
for(var j in this)
this.convertido[ this[j] ] = true;
}
return new Boolean(elem in this.convertido);
}
Evidentemente teníamos que devolver
elem in this.convertido, no
elem in this (¡que para eso creamos el this.convertido!). Por otra parte estaba mal creado, porque la variable
j hace referencia a un índice,
this[j] como nuevo índice. Cuando estaba mal
this.convertido era un array de la misma longitud que
this pero con todos sus valores a true (vaya sin sentido).
Bueno, que el valor sea
true,
1, o incluso
false,
undefined da igual, con tal de que tenga un valor definido
explícitamente.
elem in elArray sólo comprueba si ha sido inicializado, si existe.
Bueno, ahora sí que sí.
Gracias por hacermelo ver Panino!
Saludos.