Primero tengamos un mini programa de un objeto simple constructor+prototipo
Función createObj (uname, uage) {this.username = uname; }
No hay problema en este programa, pero es muy redundante. :
CreateObj.prototype = {showUserage: function () {return this.userage;}, showUsername: function () {return this.username; );
Sin embargo, la escritura de este objeto prototipo pertenece al objeto prototipo predeterminado de CreateObj.
Antes de reescribir, Constructor señala para crear OBJ
Función createObj (uname, uage) {this.username = uname; } console.log (createObj.prototype.constructor === createObj);
Después de reescribir, Constructionor apunta a objetos
CreateObj.prototype = {showUserage: function () {return this.userage;}, showUsername: function () {return this.username; .Constructor === objeto);
Por lo tanto, el constructor no puede identificar con precisión el objeto, porque se modificará
Los procedimientos que escribimos antes se expanden básicamente en el objeto prototipo (prototipo), y luego se instanciaron los objetos.
¿Puede el objeto de instancia llamar normalmente a la extensión?
Función createObj (uname, uage) {this.username = uname; } console.log (obj1.showusername ());
Se puede llamar normalmente, pero si el objeto prototipo se reescribe, no se llamará
Función createObj (uname, uage) {this.username = uname; ;
Porque después de reescribir el objeto prototipo, se instancia antes de reescribir, por lo que el prototipo implícito de la instancia __proto__ no apuntará al objeto Prototipo de reescritura, por lo que no llamará otro problema. Prototipo, hay tipos de cotización en el objeto (prototipo), y tenga cuidado, porque múltiples instancias comparten el objeto prototipo, siempre que haya una instancia que cambie el valor del tipo de referencia, todas las demás instancias recibirán el resultado después del resultado después del cambiar.
Función createObj () {} createObj.prototype = {nombre: 'Ghostwu', Habilidades: ['Php', 'JavaScript', 'Linux']}; Python ');
La característica de intercambio del prototipo puede ser conveniente para expandir algunos métodos para algunos objetos construidos, como la matriz para repetir
Array.prototype.unique = function () {var res = []; = - 1) {res.push (this [i]);}} return Res;} var anrr = [10, 20, 30, 30, 20, 40, 20]; ; / 10, 20, 30, 40
Sin embargo, no extienda casualmente el método en los objetos construidos.
Lo anterior es todo el contenido de este artículo.