Propriétés et méthodes qui peuvent être accessibles par tous les cas qui sont accessibles dans JavaScript dans JavaScript. partie de la connaissance.
Les définitions de type de base sont les suivantes:
Copier le code du code comme suit:
fonction de fonction () {}
Personne.prototype = {
Constructeur: personne,
Nom: "Person",
Âge: 100,
Amis: [a "," b "] ,,
getName: function () {
Renvoie ce.name;
}
};
Définissez les exemples de deux personnes, modifiez la propriété du nom dans l'instance (l'attribut est défini dans le prototype), le code de test est le suivant
Copier le code du code comme suit:
var p1 = new personne ();
var p2 = new personne ();
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 ("name") + "<br/>");
document.write (p2.hasownproperty ("name") + "<br/>");
Document.Write (object.keys (p1) + "<br/>");
document.write (object.keys (p2) + "<br/>");
Document.Write (object.get.getownpropertyNames (Person.prototype) + "<br/>");
document.write (personne.prototype.name + "<br/>");
Après les tests, il peut être constaté que P1.NAME = "P1" ne modifie pas la valeur du nom, mais ajoute un attribut de nom au Namepe dans l'instance P1. Ce dernier objet.keys (P1) peut également voir qu'il existe un attribut de nom supplémentaire dans l'instance P1 sans le P2. Toute la transmission dans JS est une transmission de valeur. code pour illustrer ce problème.
Copier le code du code comme suit:
var obj = nouveau objet ();
obj.name = "obj";
fonction changeObj (o) {
o.name = "changé";
o = nouvel objet ();
o.name = "newoBj";
}
ChangeObj (obj);
document.write (obj.name);
Dans la méthode changéoBJ, o = new Object () ne modifie pas la valeur du paramètre O, mais coupe la relation de référence d'origine, donc le résultat n'est pas NewObj mais modifié, mais modifié
Test suivant pour modifier l'attribut d'amis dans le prototype dans le premier exemple.
Copier le code du code comme suit:
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 ("amis") + "<br/>");
Document.Write (P2.HasownProperty ("Friends") + "<br/>");
Document.Write (object.keys (p1) + "<br/>");
document.write (object.keys (p2) + "<br/>");
Document.Write (object.get.getownpropertyNames (Person.prototype) + "<br/>");
document.write (personne.prototype.friends + "<br/>");
Les résultats des tests sont fondamentalement les mêmes que le premier test.
Sur la base de ces deux résultats de test, il est constaté que les attributs de type de valeur dans le prototype ne peuvent pas être directement modifiés dans l'instance (bien sûr, ce type de valeur ne doit pas être défini dans le prototype.