recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Est-ce encore un problème de prototype?

Je ne comprends pas quelle est la différence essentielle entre les deux manières d’écrire suivantes ?

function Person() {
}

Person.prototype.age = function(n) {
    return n;
}
var person = new Person();
person.age(9);

La méthode d'écriture ci-dessus utilise le prototype pour permettre à l'objet instancié d'appeler la fonction de la classe parent.

La méthode suivante ne réussit pas le prototype, mais son utilisation est exactement la même.

function Person() {
    this.age = function(n) {
        return n;
    }
}
var person = new Person();
person.age(9);

Alors sur quels aspects les deux sont-ils comparables ? S'il vous plaît conseiller, merci!

怪我咯怪我咯2748 Il y a quelques jours547

répondre à tous(3)je répondrai

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:32:56

    Il y a une différence dans l'économie de mémoire

    • La première méthode, la définition de prototye, tous les descendants partagent une définition de méthode, qui n'occupe qu'un seul espace dans la mémoire. Quel que soit le nombre d'instances que vous créez, la méthode age de toutes les instances pointe vers cette adresse mémoire.

    • La deuxième méthode est définie dans le constructeur. Chaque fois qu'une instance est créée, la définition de la méthode age allouera un espace exclusif à l'instance. À mesure que davantage d’instances sont créées, la mémoire augmente proportionnellement.

    En résumé, s'il s'agit d'une méthode courante, merci de la mettre dans le prototype.

    répondre
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:32:56

    La deuxième façon d'écrire est le modèle constructeur, qui est facile à utiliser, mais le principal problème de cette méthode est que chaque méthode doit être recréée sur chaque instance.
    La première approche de modèle de prototype résout ce problème en permettant à toutes les instances d'objet de partager les propriétés et les méthodes qu'il contient.

    répondre
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:32:56

    Pour faire simple, les fonctions sont les mêmes, sauf que dans la plupart des cas les méthodes sont écrites dans le prototype et les propriétés sont écrites dans le constructeur, donc la première méthode est plus couramment utilisée

    répondre
    0
  • Annulerrépondre