Cada función de JavaScript tiene un atributo prototipo (el objeto JavaScript no tiene este atributo). Este atributo se refiere a un objeto, que es el objeto prototipo. JavaScript nos permite modificar este objeto prototipo.
Hay 2 formas de modificar:
Método 1: Agregar propiedades o métodos al objeto prototipo original
función persona () {} persona.prototype.add = function () {alert (this.name);}; persona.prototype.name = "aty"; var p1 = new Person (); p1.add (); // atyMétodo 2: Reescribir (sobrescribir) el objeto prototipo
función persona () {} persona.prototype = {add: function () {alert (this.name);}, nombre: "aty"} var p2 = new Person (); p2.add (); // atyPuede ver que los dos métodos anteriores pueden modificar el prototipo, entonces, ¿cuál es la diferencia? ¿Qué método es el método recomendado?
función persona () {} function animal () {} var persona = nueva persona (); var animal = new Animal (); // Modifique el prototipo Person.prototype.say = function () {alert ("persona");} // modificar el prototipo animal.prototype = {say: function () {alerta ("persona");}} persona.say (); personAnimal.say (); // typeError no capturado: Undefined no es una funciónSi crea un objeto primero y luego modifica el prototipo, entonces si usa el método 1, el objeto que ha creado puede acceder correctamente al prototipo modificado; Si usa el Método 2, el objeto que ha creado no puede acceder al prototipo modificado. Desde esta perspectiva, obviamente, el método 1 es mejor que el método 2. ¿Por qué está sucediendo esto?
función persona () {} function animal () {} var persona = nueva persona (); var animal = new animal (); alerta (persona .__ proto__ === Person.prototype); // TRUEALERT (animal .__ proto__ === animal.prototype); // true // modifique prototipo persona.prototype.say = function () {alerta ("persona");};} ////modifique prototipo de prototipo Animal.prototype = {say: function () {alert ("persona");}} alert (persona .__ proto__ === Person.prototype); // TrueLert (animal .__ proto__ === animal.prototype); // falsoObviamente, esto es muy similar a "modificar referencia" y "modificar el objeto apuntado por referencia" en Java, y el efecto es el mismo.
La explicación detallada anterior de la diferencia entre modificación y reescritura (sobrescribir) del prototipo de JavaScript es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.