У меня есть следующая объектная модель, которую я хочу получить - я бился головой о бит клона! Это возможно? Кажется, я не могу получить доступ к конструктору SubClass из базового класса без жесткого его кодирования.
Код предназначен для очереди произвольных операций, которые имеют много общих функций; новые операции создаются как подклассы, которые просто переопределяют метод action () для определенной функциональности операции.
Возможно ли это без переопределения метода clone () в каждом подклассе?
/*
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
...
}