javascript - Est-ce encore un problème de prototype?
怪我咯
怪我咯 2017-05-19 10:30:56
0
3
539

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!

怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(3)
过去多啦不再A梦

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.

習慣沉默

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.

習慣沉默

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal