Le cas où la méthode est écrite dans le constructeur est appelée la méthode dans la fonction, et le cas où la méthode est écrite sur l'attribut prototype est appelée la méthode du prototype.
• Méthodes Au sein de la fonction: en utilisant des méthodes dans la fonction, nous pouvons accéder aux variables privées à l'intérieur de la fonction. Si l'objet que nous utilisons le nouveau constructeur pour nous obliger à utiliser des variables privées à l'intérieur du constructeur, nous devons envisager d'utiliser des méthodes dans la fonction à l'heure actuelle.
• Méthodes sur le prototype: lorsque nous devons créer un grand nombre d'objets via une fonction, et ces objets ont de nombreuses méthodes; Pour le moment, nous devons envisager d'ajouter ces méthodes au prototype de la fonction. Dans ce cas, notre code consommera une mémoire relativement petite.
• Dans les applications réelles, ces deux méthodes sont souvent utilisées en combinaison; Nous devons donc d'abord comprendre ce dont nous avons besoin, puis choisir comment l'utiliser.
// Afonction du constructeur a (name) {this.name = name || 'un'; this.sayhello = function () {console.log ('Bonjour, je m'appelle:' + this.name); }} // Constructeur Bfunction b (name) {this.name = name || 'b';} b.prototype.sayhello = function () {console.log ('bonjour, je m'appelle:' + this.name);}; var a1 = new a ('a1'); var a2 = new a ('a2'); a1.sayhello (); a2.sayhello (); var b1 = new B ('b1'); B ('b2'); b1.sayhello (); b2.sayhello ();J'ai écrit deux constructeurs, le premier est A, qui contient une méthode Sayshello; Le second est le constructeur B, qui écrit cette méthode Sayshello sur la propriété prototype du constructeur B. Écrivant la méthode à l'intérieur du constructeur augmente le coût de l'initialisation d'un objet via le constructeur, et l'écriture de la méthode sur la propriété prototype réduit efficacement ce coût. Vous pouvez penser que les méthodes d'appel sur l'objet sont beaucoup plus rapides que les méthodes d'appel sur sa chaîne prototype, ce qui n'est pas le cas. Si vous n'avez pas beaucoup de prototypes sur l'objet, leur vitesse est en fait similaire.
De plus, certaines choses à noter:
• Tout d'abord, si vous définissez une méthode sur la propriété Prototype de la fonction, n'oubliez pas que si vous modifiez une méthode, la méthode de tous les objets générée par ce constructeur sera modifiée.
• Un autre point est la question de l'amélioration variable. Nous pouvons jeter un œil au code suivant:
func1 (); // Une erreur sera signalée ici car Func1 n'a pas reçu de valeur lors de l'exécution de la fonction. Erreur: Func1 n'est pas un fonctionvar func1 = function () {console.log ('func1');}; func2 (); // Ceci sera exécuté correctement parce que la déclaration de la fonction sera promue.function func2 () {console.log ('func2');}• Concernant la question de la sérialisation des objets. Les attributs définis sur le prototype d'une fonction ne seront pas sérialisés. Vous pouvez voir le code suivant:
fonction a (name) {this.name = name;} a.prototype.saywhat = 'dire quoi ...'; var a = new a ('dreamApple'); console.log (json.stringify (a));On peut voir que la sortie est {"nom": "DreamApple"}
L'article ci-dessus discute brièvement de la méthode et du prototype de JS Constructeurs est tout le contenu que j'ai partagé avec vous. J'espère que cela pourra vous donner une référence et j'espère que vous pourrez soutenir Wulin.com plus.