Prototype en JavaScript: definición y ejemplos de uso

En este post se explica cuál es la función de la palabra reservada prototype en el lenguaje de programación JavaScript. También se describe cuándo es recomendable su uso, ventajas, desventajas y ejemplos del mismo.

Prototype en JavaScript

Es una propiedad que tienen todos los objetos de JavaScript, el cual representa el prototipo de cada objeto.

Gracias a prototype, se pueden modificar los objetos o agregar algún polyfill.

Ventajas de prototype

Cuando se agrega un método al objeto, a través de prototype, todos los demás objetos lo heredan al instante.

Cuándo (y cuándo no) usar prototype

Si el objeto no es del programador, nunca. Es decir, no es recomendable modificar a Array, Object, String, etcétera; pues son objetos que son globales y a su vez especiales. Nunca se deben modificar , si no es estrictamente necesario.

En cambio, si son objetos propios (o clases), no hay ningún problema.

En el caso de un polyfill

Es útil usar prototype cuando se programa un polyfill. Por ejemplo, vamos a suponer que se desea agregar el método forEach de los arreglos en caso de que el mismo no exista.

Si el método ya existe, no se hace nada; en caso de que no, se define. Todo esto permitirá que se pueda usar a forEach en los arreglos, sin importar el navegador o versión de JavaScript.

El código, en el cual se usa prototype, podría quedar así:

De esta manera, si el método existe, todo seguirá normal. Si no, entonces se implementa el código de forEach. Así es como funcionan los polyfill; pero antes de modificar se comprueba si el método no existe.

Al crear clases y objetos

Por otro lado, prototype es de gran ayuda al definir clases. No recuerdo en qué versión de JS se hace así, pero había una forma como la siguiente:

De esta manera se agregan métodos a los objetos, que más tarde pueden ser creados con:

var m = new Mascota("Maggie", 3);

Para jugar con el lenguaje

Como lo dije, no se debe usar a prototype cuando se desee o cuando se piense que esa es la solución a algo. Sin embargo, si se desea jugar un poco o probar lo que este maravilloso lenguaje permite, es válido.

Se tienen a las cadenas; las mismas tienen algunos métodos como toLowerCase. Se puede implementar el método invertir, el cual regresaría una cadena nueva, pero invertida.

El código quedaría así:

Un método repetido y visto miles de veces; pero eso que se acaba de hacer permite lo siguiente:

"Hola".invertir();

Sin importar cuál cadena sea (siempre y cuando sea una cadena); al llamar a este método se devuelve una nueva cadena pero invertida.

Todo eso se puede probar aquí:

Cuando normalmente, el método se llamaría así:

invertir("Cadena");

Aunque puede parecer divertido o útil, se desaconseja esto. Sobre todo porque a veces cuando se recorre con for(var propiedad in objeto) y no se comprueba con hasOwnProperty, hay resultados inesperados.

Conclusión

En resumen, prototype ayuda a definir más métodos de un objeto, o a sobrescribir (a veces) a los mismos. Esto no es recomendable de ninguna manera, y si se desea agregar un método, se debe comprobar primero si el mismo no existe.

Si se desea una definición más formal de prototype en JavaScript, aquí está este link de MDN.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario