Quelqu'un peut-il clarifier la différence entre une fonction constructeur et une fonction usine en Javascript.
Quand utiliser l'un plutôt que l'autre ?
Quelqu'un peut-il clarifier la différence entre une fonction constructeur et une fonction usine en Javascript.
Quand utiliser l'un plutôt que l'autre ?
Les usines sont une couche d'abstraction, et comme toutes les abstractions, elles ont un coût en complexité. Lorsque l'on rencontre une API basée sur une fabrique, il peut être difficile pour le consommateur d'API de savoir quelle est la fabrique pour une API donnée. Avec les constructeurs, la découverte est triviale.
Lorsque vous devez choisir entre les ctors et les usines, vous devez décider si la complexité est justifiée par les avantages.
Il convient de noter que les constructeurs Javascript peuvent être des usines arbitraires en retournant autre chose que this ou undefined. Ainsi, en js, vous pouvez obtenir le meilleur des deux mondes - API découvrable et mise en commun/cache des objets.
En JavaScript, le coût de l'utilisation des constructeurs est plus élevé que celui de l'utilisation des fabriques car toute fonction en JS peut retourner un nouvel objet. Les constructeurs ajoutent de la complexité en : Requérant new
Modification du comportement de this
Modification de la valeur de retour, Connexion d'un prototype ref, Activation instanceof
(qui ment et ne doit pas être utilisé à cette fin). Ostensiblement, tous ces éléments sont des "fonctionnalités". En pratique, elles nuisent à la qualité de votre code.
Une nouvelle chose à ajouter aux réponses précédentes est qu'il existe une nouvelle façon de déclarer les fonctions Constructor.
class CreateCirle {
constructor(radius) {
this.radius = radius;
this.draw = function () {
console.log('we draw a circle with radius: ', this.radius);
};
this.name = "Circly";
this.address = "Math Graph";
}
}
vous devez ajouter class
y constructor
mot-clé.
puis l'invoquer normalement sans aucune différence.
let cirle = new CreateCirle(5);
cirle.draw();
N'oubliez pas de le faire avec la convention de nom PascalCase comme mentionné précédemment.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.