Maison > interface Web > js tutoriel > Comment puis-je organiser des prototypes JavaScript tout en préservant « ce » références et héritage ?

Comment puis-je organiser des prototypes JavaScript tout en préservant « ce » références et héritage ?

Susan Sarandon
Libérer: 2024-11-23 00:58:11
original
1042 Les gens l'ont consulté

How Can I Organize JavaScript Prototypes While Preserving

Organisation des prototypes JavaScript avec références et héritage préservés

Pour organiser efficacement le code lors de l'utilisation de prototypes JavaScript et de l'héritage, un problème courant se pose avec la perte de la valeur « ceci » dans les prototypes personnalisés. Dans ce problème, l'intention est d'organiser le code en compartimentant les fonctionnalités en objets imbriqués tout en conservant la référence et l'héritage.

Solution proposée :

Une approche pour résoudre ce problème est pour créer une classe dédiée à la fonctionnalité en question plutôt que de l'imbriquer directement dans le prototype lui-même.

var Controls = function (controllable_object) {
    this.ref = controllable_object;
};
Controls.prototype.next = function () {
    this.ref.foo();
}
// ..

var Carousel = function () {
    this.controls = new Controls(this);
};
// ..
Copier après la connexion

En définissant les contrôles comme une classe distincte classe, la référence « ceci » reste intacte même au sein des prototypes personnalisés. Cependant, cette solution présente la limitation de ne pas permettre de remplacer l'implémentation des contrôles.

Solution d'injection de dépendances :

Pour permettre le remplacement des implémentations de contrôles, un Une approche d'injection de dépendances peut être utilisée :

var Controls = function (controllable_object) {
    this.ref = controllable_object;
};
Controls.prototype.next = function () {
    this.ref.foo();
}
// ..

var Carousel = function () {
    this.controllers = [];
};
Carousel.prototype.addController = function (controller) {
    this.controllers.push(controller);
};
// ..

var carousel = new Carousel();
carousel.addController(new Controls(carousel));
Copier après la connexion

Cette solution offre de la flexibilité en permettant l'ajout et la modification dynamiques de contrôleurs, permettant ainsi la sélection sélective remplacement des fonctionnalités dans les classes héritées.

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!

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