El método del constructor es muy útil, pero hay un desperdicio de memoria.
Las funciones asignadas por el prototipo son compartidas por todos los objetos.
Los atributos asignados por prototipo son independientes .----- Si no modifica los atributos, se comparten
Si queremos que todos los objetos usen la misma función, es mejor agregar funciones utilizando el método prototipo, que guarda la memoria.
ejemplo:
// ---- Modo de constructor
Agregue un "tipo" de atributo sin cambios al objeto CAT y luego agregue un método EAT (comiendo rata). Luego, el objeto prototipo Cat se convierte en lo siguiente:
<script> function cat (nombre, color) {this.name = name; this.color = color; this.type = "feat"; this.eat = function () {alert ("comer mouse"); }; } // Generar ejemplo: var cat1 = nuevo gato ("cabello grande", "amarillo"); var cat2 = nuevo gato ("comer Er cabello", "negro"); alerta (Cat1.Type); // feat cat1.eat (); // comer alerta de mouse (cat1.eat == Cat2.eat); // falso </script>Es decir, para cada objeto de instancia, el atributo de tipo y el método Eat () son exactamente el mismo contenido. Cada vez que se genera una instancia, debe ser contenido repetido y ocupar más memoria. Esto no es ecológico ni eficiente.
// ---- Modo prototipo
JavaScript estipula que cada constructor tiene un atributo prototipo que apunta a otro objeto. Todas las propiedades y métodos de este objeto serán heredados por instancias del constructor.
Esto significa que podemos definir directamente esas propiedades y métodos sin cambios en el objeto prototipo.
<script> function cat (nombre, color) {this.name = name; this.color = color; } Cat.prototype.type = "femenino"; cat.prototype.eat = function () {alert ("comer mouse")}; // generar una instancia. var cat1 = nuevo gato ("cabello grande", "amarillo"); var cat2 = nuevo gato ("2 cabello", "negro"); alerta (Cat1.Type); // Cat Cat1.eat (); // Alerta de ratón (Cat1.eat == Cat2.eat); // Truef </script>En este momento, los métodos de atributos de tipo y Eat () de todas las instancias son en realidad una dirección de memoria, que apunta al objeto prototipo, mejorando así la eficiencia de la operación.
La introducción anterior a la diferencia entre el constructor JS y el prototipo prototipo es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.