Foros del Web » Programando para Internet » Javascript »

Builtin prototypes, ¿sí o no?

Estas en el tema de Builtin prototypes, ¿sí o no? en el foro de Javascript en Foros del Web. Hola amigos, hasta ahora nunca me había parado a pensar en esto, pero ayer vi que Google ha sacado una nueva edición de JS Style ...
  #1 (permalink)  
Antiguo 26/02/2011, 14:51
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Builtin prototypes, ¿sí o no?

Hola amigos, hasta ahora nunca me había parado a pensar en esto, pero ayer vi que Google ha sacado una nueva edición de JS Style Guide y según esto como mucho se puede modificar el prototype de Function, pero sigue sin ser correcto. Mi pregunta es: ¿por qué? ¿Qué tiene de malo hacerlo?
Saludos :D
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #2 (permalink)  
Antiguo 26/02/2011, 15:28
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Builtin prototypes, ¿sí o no?

buenas...

en lo personal, yo no encuentro mal modificar el prototipo de los constructores nativos. por un lado, fijate que la guia no es un estandar definitivo, simplemente son sugerencias de lo que se considera una buena practica de programacion. segun la guia, dicha practica puede traer mas complicaciones al momento de depuracion. a mi modo de entender, quizas a lo que se refiere es a modificar las propiedades o metodos nativos del constructor. si es asi, en mi opinion tiene razon. mientras tanto, no le veo mal expandir las funcionalidades de los constructores nativos. por ejemplo, ¿que tal si queremos exportar algunas funciones de otros lenguajes a los constructores? por mencionar un ejemplo, las funciones de array que utiliza php. ¿que mejor lugar que agregarlo al prototipo? mi conclusion es que si sabes lo que estas haciendo, no siempre tienes que dejarte llevar por lo que las tendencias dictan. ¿verdad que no usarias un framework simplemente porque te diga que es lo mejor hay?

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 26/02/2011 a las 18:06 Razón: palabra mal escrita u_u
  #3 (permalink)  
Antiguo 26/02/2011, 15:48
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Builtin prototypes, ¿sí o no?

Gracias por contestar, evidentemente no iba a hacer caso a todo lo que dijera Google, no se lo hago a la W3C... (aunque no queramos usamos código no estándar por culpa de IE ) . La pregunta era el por qué de esa afirmación que me ha parecido demasiado rotunda. Una de las cosas que menos me gusta de PHP es que a las funciones hay que pasarles como argumento el objeto a modificar, y sin prototypes es difícil no hacerlo de esta manera.
Saludos (:
PD: Me conoces bien, diste en el clavo con lo del framework XD
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #4 (permalink)  
Antiguo 26/02/2011, 16:06
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Builtin prototypes, ¿sí o no?

sobre el pd, lo dije porque sabia que estabas opuesto a los frameworks

probablemente el no rotundo es como ya habia mencionado, mas complicado de depurar. pero no lo sabremos hasta que eso se explique en la guia. habria que investigar en otras observaciones o materiales pero ahora mismo no puedo hacerlo.

entiendo tu disgusto con php, incluso comparto ese disguto contigo. lo que pasa es que php no es un lenguaje basado en prototipo como javascript, sino un lenguaje basado en clases. es de mi opinion que todas las personas que adquieren como primer lenguaje uno basado en prototipo, al moverse a uno de clase, encuentra un disgusto muy grande. otra cosa que me irrita es la cantidad de funciones dispersada en el ambito global y lo encuentro como que todo esta muy desordenado a diferencia de javascript.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 26/02/2011, 16:23
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Builtin prototypes, ¿sí o no?

Uff, pensé que era el único XD Pido perdón a los programadores PHP si se ofenden, pero comparto la opinión de @ZK 100%
Saludos :D
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #6 (permalink)  
Antiguo 26/02/2011, 17:54
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Builtin prototypes, ¿sí o no?

por supuesto, esta lejos de ser un insulto! simplemente estamos tratando con dos paradigmas distintos. recuerdo la primera vez que me introduci al mundo de la programacion fue con C++ y mi frustracion fue tan grande -aparte de que el libro no era bueno- que acabe abandonandolo. luego me interese por javascript y fue ahi cuando pude entender algunos conceptos de C++. no hace hasta un par de años que decidi capacitarme en php pero volvi a tener la misma frustracion. habian cosas en que no podia asimilarlas y se me complicaba. pero de poco a poco, con un buen material como el manual de php, he podido apaciguar las frustraciones. en fin, es simplemente eso, son dos paradigmas distintos.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 12/03/2011, 04:55
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Builtin prototypes, ¿sí o no?

un dato que me gustaria traer, mas bien no para confirmar las opiniones antes expresadas sino como parte de un debate. acabo de leer lo siguiente en el Draft HTML5.
Cita:
Iniciado por http://www.w3.org/TR/html5/infrastructure.html#extensibility
Authors can extend APIs using the JavaScript prototyping mechanism. This is widely used by script libraries, for instance.
Cita:
Iniciado por Traduccion
los autores pueden extender las APIs utilizando el mecanismo prototype de javascript. este es extensamente utilizado por librerias de javascript.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 12/03/2011, 09:01
Avatar de 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
  #9 (permalink)  
Antiguo 12/03/2011, 09:16
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Builtin prototypes, ¿sí o no?

Muchas gracias a los dos por la info :)
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:47.