Ver Mensaje Individual
  #8 (permalink)  
Antiguo 12/03/2011, 09:01
Avatar de Panino5001
Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Builtin prototypes, ¿sí o no?

Normalmente se dice que es una mala idea por esto:
Código PHP:
<script type="text/javascript">
Array.
prototype.algo=function(){return 'bla';}
var 
a=['a','b','c'];
for(
i in a){
    
alert(a[i]);    
}
</script> 
El haber modificado el prototipo trae una inclusión "inesperada" dentro del bucle.
Pero para solventar el problema podemos usar algo como esto:
Código PHP:
<script type="text/javascript">

Array.
prototype.algo=function(){return 'bla';}
var 
a=['a','b','c'];
for(
i in a){
    if(
a.propertyIsEnumerable(i))
        
alert(a[i]);    
}
</script> 
Así que mi conclusión es la misma que la del amigo zerokilled: mientras sepas lo que estás haciendo, no hay ningún problema
Lo malo es que propertyIsEnumerable no funciona igual en todos los navegadores (Ópera, por ejemplo). Pero esto, en cambio, funciona siempre:
Código PHP:
<script type="text/javascript">

Array.
prototype.algo=function(){return 'bla';}
var 
a=['a','b','c'];
for(
i in a){
    if(
a.hasOwnProperty(i))
        
alert(a[i]);    
}
</script> 

Última edición por Panino5001; 12/03/2011 a las 14:32