JavaScript es un lenguaje orientado a objetos basado en prototipos. Esto significa que los objetos tienen una relación de prototipo entre ellos, en lugar de tener una relación de clase como en lenguajes como Java o C#.
Un prototipo es un objeto del cual otros objetos heredan propiedades. Cada objeto en JavaScript tiene una propiedad especial llamada "prototype", que apunta a otro objeto del cual hereda propiedades. Si un objeto no tiene una propiedad específica, JavaScript busca en su prototipo, y así sucesivamente hasta encontrar la propiedad o llegar al objeto base Object.prototype.
Por ejemplo, podemos crear un objeto "Animal" como prototipo para todos los animales:
functionAnimal(){}// Es importante que las clases empiecen con máyusculas Animal.prototype.esVivo=true;// Y a su prototype le agregamos la propiedad de "esVivo"
Luego, podemos crear un objeto "Perro" que herede de "Animal":
functionPerro(){}// Esta es la manera de hacer que un objeto "Herede" de otroPerro.prototype=Object.create(Animals.prototype);
Ahora, cada objeto "Perro" tendrá acceso a la propiedad "esVivo" heredada del prototipo "Animals":
Además de crear prototipos y heredar de ellos, es posible editar los prototipos de objetos existentes en JavaScript. Por ejemplo, podemos agregar un método al prototipo de Array para calcular la suma de sus elementos:
Array.prototype.suma=function(){returnthis.reduce((a, b)=> a + b);}const numeros =[1,2,3,4,5];console.log(numeros.suma());// Output: 15
Otro ejemplo, podemos agregar un método al prototipo de String para convertir una cadena a mayúsculas:
String.prototype.mayusculas=function(){returnthis.toUpperCase();}const nombre ="Juan";console.log(nombre.mayusculas());// Output: "JUAN"
Es importante tener en cuenta que editar los prototipos de objetos existentes puede tener efectos secundarios no deseados y debe ser utilizado con precaución. Es recomendable crear clases o objetos personalizados en lugar de editar los prototipos existentes.