| 
		
			Сообщение от melky
			
		
	 | 
	| 
		даёшь чистый и понятный код!
	 | 
	
var foo = function(name) {
    return {
        A : function() {
            return 1;
        },
        B : function() {
            return 2;
        }
    }[name]();
}
alert(foo('A'));
Если нужна прямая зависимость между элементами компонента, то можно реализовать декоратор:
function Component() {
    this.foo = function() {
        return 1;
    };
}
 
function A(obj) {
    this.foo = function() {
        return obj.foo() + 2;
    };   
}
function B(obj) {
    this.foo = function() {
        return obj.foo() + 3;
    };
}
var obj = new A(new B(new Component()));
alert(obj.foo());