Propiedades y métodos a los que se puede acceder por todas las instancias a las que se puede acceder en JavaScript en JavaScript. parte del conocimiento.
Las definiciones de tipo básico son las siguientes:
Copiar código del código de la siguiente manera:
función persona () {}
Persona.prototype = {
Constructor: Persona,
Nombre: "Persona",
Edad: 100,
Amigos: [A "," B "] ,,
getName: function () {
Devolver esto.name;
}
};
Defina los ejemplos de dos personas, modifique la propiedad de nombre en la instancia (el atributo se define en el prototipo), el código de prueba es el siguiente
Copiar código del código de la siguiente manera:
var p1 = nueva persona ();
var p2 = nueva persona ();
document.write (p1.name+"<br/>");
document.write (p2.name+"<br/>");
p1.name = "P1";
document.write (p1.name+"<br/>");
document.write (p2.name+"<br/>");
document.write (p1.hasownproperty ("nombre")+"<br/>");
document.write (p2.hasownproperty ("nombre")+"<br/>");
document.write (Object.Keys (P1)+"<br/>");
document.write (Object.Keys (P2)+"<br/>");
document.write (object.get.getownpropertynames (persona.prototype)+"<br/>");
document.write (persona.prototype.name+"<br/>");
Después de las pruebas, se puede encontrar que P1.name = "P1" no modifica el valor de nombre, pero agregue un atributo de nombre al NAMEPE en la instancia P1. El último objeto. Keeys (P1) también puede ver que hay un atributo de nombre adicional en la instancia P1 sin el P2. Toda la transmisión en JS es una transmisión de valor. código para ilustrar este problema.
Copiar código del código de la siguiente manera:
var obj = nuevo objeto ();
obj.name = "obj";
función ChangeOBJ (O) {
o.name = "cambiado";
o = nuevo objeto ();
o.name = "newobj";
}
ChangeObj (obj);
document.write (obj.name);
En el método de cambiaBJ, O = new Object () no modifica el valor del parámetro O, pero corta la relación de referencia original, por lo que el resultado no es Newobj sino cambiado, sino cambiado
La siguiente prueba para modificar el atributo de amigos en el prototipo en el primer ejemplo.
Copiar código del código de la siguiente manera:
p1.friends.push ("c");
document.write (p1.friends+"<br/>");
document.write (p2.friends+"<br/>");
p1.friends = ["x", "y", "z"];
document.write (p1.friends+"<br/>");
document.write (p2.friends+"<br/>");
document.write (P1.HasownProperty ("Friends")+"<br/>");
document.write (p2.hasownproperty ("amigos")+"<br/>");
document.write (Object.Keys (P1)+"<br/>");
document.write (Object.Keys (P2)+"<br/>");
document.write (object.get.getownpropertynames (persona.prototype)+"<br/>");
document.write (persona.prototype.friends+"<br/>");
Los resultados de la prueba son básicamente los mismos que la primera prueba.
Según estos dos resultados de las pruebas, se encuentra que los atributos de tipo de valor en el prototipo no se pueden modificar directamente en la instancia (por supuesto, este tipo de valor no debe definirse en el prototipo.