Показать сообщение отдельно
  #13 (permalink)  
Старый 15.01.2012, 17:43
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от 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());
Ответить с цитированием