Estoy leyendo Javascript: The Good Parts , y luché por entender la sección de prototipos .
Después de un pequeño google, llegué a la conclusión de que es agregar propiedades a los objetos después de la declaración de objetos.
Al usar este script que apareció en w3schools, noté que eliminar la línea que agregaba la propiedad del prototipo no tenía ningún efecto . Entonces, ¿cuál es el punto?
//Prototyping
function employee(name,jobtitle,born)
{
this.name=name;
this.jobtitle=jobtitle;
this.born=born;
}
var fred=new employee("Fred Flintstone","Caveman",1970);
employee.prototype.salary=null; // <--- try removing this line
fred.salary=20000;
document.write (fred.salary);
javascript
prototyping
technique
Fuzz suave
fuente
fuente
Respuestas:
Así no es como funciona el prototipo. El prototipo se usa en la cadena del prototipo.
Cada vez que intente obtener una propiedad en un objeto, verificará el objeto para ese nombre de propiedad. Si no existe, se verá en el prototipo.
Ejemplo:
Entonces, el punto del prototipo es simplemente la reutilización y herencia del código.
fuente
prototype is undefined
---o.prototype.newProp = "mutts nuts";
o
es un objeto. La.prototype
propiedad se usa en funciones, ignórela. Solo hazloo.newProp = "mutts nuts"
Cuando lo hizo
fred.salary=20000
, agregó el atributo de salario solo a fred. Cuando utilice el prototipo, todos los empleados que creará a partir de ese momento tendrán el atributo de salario.Supongamos que tiene 100 instancias de empleados y desea agregar un atributo de salario a todos ellos. Puede hacerlo manualmente, iterar sobre cada empleado y agregarlo. O podría usar un prototipo y configurarlo para todos ellos.
El prototipo es útil cuando desea funcionalidad a algo que ya existe. Supongamos que desea agregar un método personalizado a las matrices. Harías algo como:
A partir de ahí, todas las matrices que creará tendrán ese método disponible.
fuente
Es posible que desee echar un vistazo a este artículo .
Si agrega una propiedad a un objeto que se utiliza como prototipo para un conjunto de objetos, los objetos para los que es el prototipo también obtienen la nueva propiedad.
Esa es una de las principales ventajas de un lenguaje basado en prototipos sobre los basados en clases.
Además, es fácil obtener una herencia OO clásica con JS si es necesario, pero a menudo es difícil obtener un modelo prototipo para un lenguaje que no lo implementa de manera predeterminada.
fuente