Вы можете сделать это, используя фабричную функцию (обычная функция, которая создает подходящий для вас объект):
function BaseConstructor(whichMethods) {
var elem;
if (whichMethods==='a') {
elem = new MethodSetA();
} else if (whichMethods==='b') {
elem = new MethodSetB();
} else {
// figure out what to do here if whichMethods is neither of the previous options
}
elem.init();
return(elem);
};
И вызвать его как обычный вызов функции:
var thing = BaseConstructor('b');
thing.speak();
Примечание: new
не используется BaseConstructor()
, поскольку это обычный вызов функции.