JavaScript - Otra duda sobre las 'clases' (prototype)

 
Vista:

Otra duda sobre las 'clases' (prototype)

Publicado por Pablete (4 intervenciones) el 04/03/2010 09:56:10
Hola de nuevo...

Estoy intentando informarme y practicar un poco con las 'clases' en Javascript (como habreis visto en mi nota anterior).

He estado mirando y hay una cosa que a pesar de haberlo visto en varias páginas, tutoriales, etc no acabo de entender y es lo del "prototype" que por lo visto se usa para herencia, etc, pero que no sé manejar bien (hay otra cosa que se llama prototype también que es un framework creo pero no me refiero a eso) ni sé muy bien cuándo utilizarlo ni para qué sirve exactamente (si es sólo para lo de la herencia, etc)

Alguien sabría explicarme para qué se utiliza el prototype, cuál es su utilidad y si puedes ponerme un ejemplo simple pero claro?...si puedes detallar tu respuesta te lo agradecería.

Muchas graciasssss
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de ScriptShow
Val: 2.019
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

RE:Otra duda sobre las 'clases' (prototype)

Publicado por ScriptShow (692 intervenciones) el 04/03/2010 12:39:23
Saludos,

hay mucha información al respecto, será bueno que busques algo que se adapte a tus conocimientos del tema.

Empieza por definiciones, conceptos, etc. Visita la Web:

http://es.wikipedia.org/wiki/Prototype

PD: antes de iniciarte en Framework, apende bien JavaScript, AJAX, DHTML, y algo de lenguajes interpretados en servidor: Perl, Php, Asp, etc. Encontrarás miles de tutoriales en internet. Ya tendrás oportunidad de utilizar algún Framework, o, quizás, no quieras/precises hacerlo nunca. Los Frameswork son muy eficaces para desarrollar aplicaciones web integradas, pero no son nada creativos. Si quieres verdaderamente aprender, disfrutar de tus desarrollos, no empieces por trabajar con Framework; mejor decídete por alguna técnica aropiada al proyecto, "no mates mosquitos a cañonazos". En fin, tú mismo.

Espero tengas suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra duda sobre las 'clases' (prototype)

Publicado por Pablete (4 intervenciones) el 04/03/2010 18:24:16
Como dije en mi nota NO me refería a la framework Prototype, sólo a la clase Javascript que se llama así.

Alguien tiene alguna explicación para esa clase Prototype?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra duda sobre las 'clases' (prototype)

Publicado por PasabaPorAqui (52 intervenciones) el 05/03/2010 09:58:35
Buenas

Prototype como tu mismo dices te vale para la herencia, entre otras cosa, y la puedes usar de dos formas.

supon que tienes una poligono, con sus métodos y propiedades.

function poligono(){
this.caras=0;
this.superficie=0;

this.setCaras=function(nCaras){
this.caras=nCaras;
}
this.setSuperficie=function(nSuperficie){
this.superficie=nSuperficie;
}
}

Ahora supón que creas la clase cuadrado, con información propia que no encaja en la definición base del poligono, pero que obviamente comparte información con el poligono.

function cuadrado(){
poligono.apply(this); //Con esta sintaxis, le estamos diciendo a la clase que herede las propiedades de la clase poligono
cuadrado.prototype.inheritFrom(poligono); //Con esta sintaxis le estamos diciendo que herede los métodos de poligono

//Propiedades y métodos propios de cuadrado
this.posicion=null;
this.setPosicion=function(PosX,PosY){
this.posicion={x:PosX,y:PosY};
}
}

Otra cosa.

A mayores, la clase prototype, te permite agregar métodos a clases ya existentes, por ejemplo podrías añadir métodos al objeto Number
Number.prototype.loquesea= function (num) {
//hacemos lo que sea
}

Lo mismo para tus clases, con la siguiente ventaja. Cuando creas una clase y le agregas los métodos dentro de la declaración de la clase, esos métodos se van a crear en memoria para cada instancia de la clase, pero si los creas con prototype solo se crearán una vez y serán compartidos por todas las instancias de esa clase, con el consecuente ahorro de memoria. Para las propiedades no te vale, porque también se compartirian y al modificarlas para una instancia las estarias modificando para el resto.

Si tienes más dudas, sería bueno que buscases algo de información más detallada que la que te doy yo.

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar