J'ai le modèle d'objet suivant que je veux travailler - je me suis cogné la tête contre le clone! Est-ce possible? Je n'arrive pas à accéder au constructeur SubClass à partir de la classe de base sans le coder en dur.Javascript: Permettre la fonction "virtuelle" dans la classe de base pour créer l'instance de la sous-classe
Le code est pour une file d'opérations arbitraires qui partagent toutes beaucoup de fonctionnalités communes; les nouvelles opérations sont créées en tant que sous-classes qui remplacent simplement la méthode action() pour une fonctionnalité spécifique à l'opération.
Est-ce possible sans surcharger la méthode clone() dans chaque sous-classe?
/*
Application specific subclass:
*/
function SubClass_Operation1()
{
BaseOperationClass.apply(this, arguments); // Call inherited constructor
this.action = function()
{
this.manager.addToQueue(this.clone({changeValue:1}));
this.manager.addToQueue(this.clone({changeValue:2}));
this.manager.addToQueue(this.clone({changeValue:3}));
}
}
SubClass.prototype = new BaseOperationClass;
// More of these defined for each operation
...
/*
Base class containing all common functionality
*/
function BaseOperationClass(manager)
{
this.manager = manager;
// Placeholder for virtual action() function
this.action = function()
{
}
this.clone = function(mods)
{
var res = ?????? // Should create exact copy of current SubClass
res.applyModifications(mods);
}
this.applyModifications(mods)
{
...
}
// Lots of common functionality
...
}
Je suis tombé sur ce problème (cherché et trouvé votre question) et compris une solution pour cela. Si vous avez encore des problèmes, faites le moi savoir et je vais écrire un exemple pour vous. –
Simon, partagez, je suis sûr que ça va aider quelqu'un. –
Comment pouvez-vous prédire avec précision quels seront les paramètres du constructeur de la classe de base? – jsmaupin