Chaque fonction JavaScript a un attribut prototype (l'objet JavaScript n'a pas cet attribut). Cet attribut se réfère à un objet, qui est l'objet prototype. JavaScript nous permet de modifier cet objet prototype.
Il existe 2 façons de modifier:
Méthode 1: Ajouter des propriétés ou des méthodes à l'objet prototype d'origine
fonction personne () {} personne.prototype.add = function () {alert (this.name);}; personne.prototype.name = "aty"; var p1 = new personne (); p1.add (); // atyMéthode 2: réécrire (écraser) l'objet prototype
fonction personne () {} personne.prototype = {add: function () {alert (this.name);}, nom: "aty"} var p2 = new personne (); p2.add (); // atyVous pouvez voir que les deux méthodes ci-dessus peuvent modifier le prototype, alors quelle est la différence? Quelle méthode est la méthode recommandée?
fonction personne () {} fonction animal () {} var personne = new personne (); var animal = new animal (); // modifier le prototype personne.prototype.say = function () {alert ("personne");} // modifier le prototype animal.prototype = {say: function () {alert ("personne");}} personne. personanimal.say (); // non cinglé: Undefined n'est pas une fonctionSi vous créez d'abord un objet, puis modifiez le prototype, alors si vous utilisez la méthode 1, l'objet que vous avez créé peut accéder correctement au prototype modifié; Si vous utilisez la méthode 2, l'objet que vous avez créé ne peut pas accéder au prototype modifié. De ce point de vue, la méthode 1 est évidemment meilleure que la méthode 2. Pourquoi cela se produit-il?
fonction personne () {} fonction animal () {} var personne = new personne (); var animal = new animal (); alert (personne .__ proto__ === person.prototype); // truenerert (animal .__ proto === animal.prototype); Animal.prototype = {Say: function () {alert ("personne");}} alert (personne .__ Proto__ === Person.prototype); // TRueAlert (Animal .__ Proto__ === Animal.prototype); // FauxDe toute évidence, cela est très similaire à "modifier la référence" et "modifier l'objet pointé par référence" dans Java, et l'effet est le même.
L'explication détaillée ci-dessus de la différence entre la modification et la réécriture (écrasement) du prototype JavaScript est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.