Maison > interface Web > js tutoriel > Prototype ou fermeture : quelle méthode de création d'objets JavaScript vous convient le mieux ?

Prototype ou fermeture : quelle méthode de création d'objets JavaScript vous convient le mieux ?

DDD
Libérer: 2024-12-11 04:37:09
original
693 Les gens l'ont consulté

Prototype vs. Closure: Which JavaScript Object Creation Method is Right for You?

Implémentation appropriée d'objets JavaScript personnalisés

JavaScript propose deux approches distinctes pour créer des objets personnalisés avec des propriétés et des méthodes : la méthode du prototype et la méthode de fermeture.

Prototype Way

Cette méthode est plus native de JavaScript et exploite la propriété de recherche de prototype du constructeur fonctions.

function Shape(x, y) {
  this.x = x;
  this.y = y;
}

Shape.prototype.toString = function() {
  return 'Shape at ' + this.x + ', ' + this.y;
};

function Circle(x, y, r) {
  Shape.call(this, x, y); // Invoke base constructor
  this.r = r;
}
Circle.prototype = new Shape(); // Set subclass prototype

Circle.prototype.toString = function() {
  return 'Circular ' + Shape.prototype.toString.call(this) + ' with radius ' + this.r;
};
Copier après la connexion

Closure Way

Cette méthode évite complètement l'héritage prototypique, créant une nouvelle fermeture pour chaque instance.

function Shape(x, y) {
  var that = this;
  this.x = x;
  this.y = y;
  this.toString = function() {
    return 'Shape at ' + that.x + ', ' + that.y;
  };
}

function Circle(x, y, r) {
  var that = this;
  Shape.call(this, x, y); // Invoke base constructor
  this.r = r;
  var _baseToString = this.toString;
  this.toString = function() {
    return 'Circular ' + _baseToString.call(that) + ' with radius ' + this.r;
  };
}

var myCircle = Circle(); // Using `new` is optional here
Copier après la connexion

Choix et considérations

Les deux méthodes présentent des avantages et des inconvénients.

Prototype Façon

  • Plus efficace pour l'héritage d'objets lourds
  • Natif de JavaScript, facilitant l'utilisation d'instanceof
  • Nécessite une invocation de constructeur appropriée dans les sous-classes

Mode de fermeture

  • Tous les l'instance a sa propre copie des méthodes (moins efficace)
  • Simplifie la liaison des méthodes aux instances
  • Aucune instance de support, nécessitant des vérifications personnalisées

En fin de compte, le meilleur choix dépend des exigences et des préférences spécifiques du projet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal